Добавить существующий PDF-файл из файла в ненаписанный документ с помощью iTextSharp

Как правильно добавить страницу (с )из существующего на -диске 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 документ?

Заранее спасибо и признательность за ваши размышления по этому поводу. Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.

5
задан Troy 25 July 2012 в 04:41
поделиться