iTextSharp (версия 4.1.6) — добавить текст/таблицу поверх существующего PDF

#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