Как правильно добавить страницу (с )из существующего на -диске PDF-файла в текущий -, который -создается в -PDF-документе в памяти?
У нас есть класс, который создает PDF-документ с помощью iTextSharp. Это прекрасно работает. На данный момент мы добавляем Условия использования в виде изображения на последней странице:
this.nettPriceListDocument.NewPage();
this.currentPage++;
Image logo = Image.GetInstance("/inetpub/Applications/Trade/Reps/images/TermsAndConditions.gif");
logo.SetAbsolutePosition(0, 0);
logo.ScaleToFit(this.nettPriceListDocument.PageSize.Width, this.nettPriceListDocument.PageSize.Height);
this.nettPriceListDocument.Add(logo);
У меня есть это изображение в виде документа PDF, и я предпочел бы добавить его. Если я смогу понять это, можно будет добавить другие PDF-документы, которые нам могут понадобиться, к тому, что я создаю.
Я пробовал:
string tcfile = "/inetpub/Applications/Trade/Reps/images/TermsAndConditions.pdf";
PdfReader reader = new PdfReader(tcfile);
PdfWriter writer = PdfWriter.GetInstance(this.nettPriceListDocument, this.nettPriceListMemoryStream);
PdfContentByte content = writer.DirectContentUnder;
for (int pageno = 1; pageno < reader.NumberOfPages + 1; pageno++)
{
this.nettPriceListDocument.NewPage();
this.currentPage++;
PdfImportedPage newpage = writer.GetImportedPage(reader, pageno);
content.AddTemplate(newpage, 1f, 1f);
}
Что приводит к исключению «документ не открыт» вwriter.DirectContentUnder
Я тоже пробовал:
string tcfile = "/inetpub/Applications/Trade/Reps/images/TermsAndConditions.pdf";
PdfReader reader = new PdfReader(tcfile);
PdfConcatenate concat = new PdfConcatenate(this.nettPriceListMemoryStream);
concat.AddPages(reader);
Это приводит к вставке пустой страницы странного размера поверх обычной первой страницы документа.
Я тоже пробовал:
string tcfile = "/inetpub/Applications/Trade/Reps/images/TermsAndConditions.pdf";
PdfReader reader = new PdfReader(tcfile);
PdfCopy copier = new PdfCopy(nettPriceListDocument, nettPriceListMemoryStream);
for (int pageno = 1; pageno < reader.NumberOfPages + 1; pageno++)
{
this.currentPage++;
PdfImportedPage newpage = copier.GetImportedPage(reader, pageno);
copier.AddPage(newpage);
}
copier.Close();
reader.Close();
Что приводит к NullReferenceException в copier.AddPage(newpage)
.
Я тоже пробовал:
string tcfile = "/inetpub/Applications/Trade/Reps/images/TermsAndConditions.pdf";
PdfReader reader = new PdfReader(tcfile);
PdfCopyFields copier = new PdfCopyFields(nettPriceListMemoryStream);
copier.AddDocument(reader);
Это также приводит к NullReferenceException в copier.AddDocument(reader)
.
Большинство этих идей я получил из различных вопросов и ответов StackOverflow. Одна вещь, с которой, похоже, никто не имел дела, это добавление новой страницы (s )из существующего файла PDF в уже -существующий в -документ памяти, который еще не записан в PDF. файл на диске . Этот документ уже был открыт, и в него были записаны страницы данных. Если я пропущу эту процедуру «Положения и условия» или просто напишу, что это изображение (, как и изначально ), итоговый PDF-файл получится очень хорошим.
Чтобы закончить, как я начал :Как правильно добавить страницу (s )из существующего на -диске PDF-файла в текущий -, который -создается в -памяти PDF документ?
Заранее спасибо и признательность за ваши размышления по этому поводу. Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.