#c# #pdf #itext #add #manipulate
Вопрос:
У меня есть pdf-документ (созданный с помощью iTextSharp — бесплатной версии 4.1.6), и я хочу добавить текст / таблицу в верхней части этого pdf-файла. Я попытался создать два потока памяти из документов iTextSharp и объединить их в один, см. Мой код ниже. Но новый PDF-файл не может быть открыт. Есть идеи, что я делаю не так? Есть еще какие-нибудь идеи по добавлению текста / таблицы в верхней части существующего PDF-файла? Заранее спасибо!
public void CreateTestPDF(string _pathOfOriginalPDF, string _pathOfModifiedPDF)
{
string oldFile = _pathOfOriginalPDF;
string newFile = pathOfModifiedPDF;
byte[] bytesHeader;
byte[] bytesBody;
byte[] bytesCombined;
using (MemoryStream ms = new MemoryStream())
{
Document doc = new Document();
doc.Open();
doc.Add(new Paragraph("This is my header paragraph"));
if (doc.IsOpen())
{
doc.Close();
}
bytesHeader = ms.ToArray();
}
using (MemoryStream ms = new MemoryStream())
{
Document doc = new Document();
//doc.Open();
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(oldFile, FileMode.Create));
if (doc.IsOpen())
{
doc.Close();
}
bytesBody = ms.ToArray();
}
IEnumerable<byte> iCombined = bytesHeader.Concat(bytesBody);
bytesCombined = iCombined.ToArray();
string testFile = _pathOfModifiedPDF;
using (FileStream fs = File.Create(testFile))
{
fs.Write(bytesBody, 0, (int)bytesBody.Length);
}
}
Комментарии:
1. Некоторые концептуальные проблемы: в вашем первом
using
блоке вы ничего не вкладываете вMemoryStream
. Во второмusing
блоке вы не открываете документ и ничего к нему не добавляете. И @KJ уже объяснил, что то, что вы делаете в конце, тоже не может работать2. iTextSharp 4 около 10 лет, потенциально имеет множество функциональных проблем и проблем с безопасностью и больше не поддерживается. Я рекомендую обновить до iText 7