Я использую iText (в частности, iTextSharp 4.1.6), и я хочу создать PDF, объединив страницы из существующих PDF-файлов, а также вставив новые страницы, созданные с изображения.iText - как добавить страницы в документ, созданный с помощью PdfCopy
У меня эти две части работают отдельно, используя PdfCopy и PdfWriter соответственно. Код для создания страницы с изображения выглядит следующим образом:
PdfWriter pw = PdfWriter.GetInstance(doc, outputStream);
Image img = Image.GetInstance(inputStream);
doc.Add(img);
doc.NewPage();
Теперь Поскольку PdfCopy наследует от PDFWriter, я думал, что я мог бы добавить такую «страницу изображения» на мой объект PdfCopy, используя ту же технику, но он не работает (если вы создаете экземпляр PdfCopy вместо PdfWriter в приведенном выше примере, на странице ничего не появляется).
Из-за быстрого взгляда на исходный код я замечаю, что когда конструктор для PdfCopy вызывает конструктор суперкласса, он делает это с новым объектом Document, а не с тем, который прошел, поэтому я предполагаю, что это причина.
Есть ли лучший способ сделать это? На мой взгляд, лучше всего создать одностраничный Pdf из изображения с помощью PdfWriter, а затем добавить его в документ с помощью PdfCopy, но это похоже на обходное решение.
Что вы описали, как работа вокруг мне кажется, правильное решение. PdfCopy предназначен для объединения нескольких PDF-файлов, и вы применяете его к ранее существующим PDF-файлам и вашему новому создавать. если изображение не слишком велико, вы можете создать этот PDF в памяти (байт []) и прочитать его оттуда; таким образом, даже нет необходимости в дополнительных временных файлах. – mkl
Спасибо - я не слишком хорошо знаком с iText, и кажется, что это так полно, что я просто не был уверен, был ли другой способ сделать это. Я реализовал его, создав временный PDF-файл в памяти, и все это прекрасно работает :-) – Andy