Скопировать страницу из pdf файла в новый документ
Я пытаюсь скопировать одну страницу из существующей .pdf
файл и вставьте его в новый документ, как это:
using (var writer = new PdfWriter(OutputFile))
{
var reader = new PdfReader("Templates//PDF_Template_Empty.pdf");
PdfDocument template = new PdfDocument(reader);
var titlepage = template.GetPage(1);
using (var pdf = new PdfDocument(writer))
{
pdf.AddPage(titlepage); // exception
Но на .AddPage()
это бросает это исключение:
iText.Kernel.PdfException: "Страница iText.Kernel.Pdf.PdfPage не может быть добавлена в документ iText.Kernel.Pdf.PdfDocument, поскольку она принадлежит документу iText.Kernel.Pdf.PdfDocument."
Как я могу это исправить?
1 ответ
Объект страницы PDF обычно имеет несколько связанных объектов. Если вы добавите только саму страницу в новый документ, а не связанные объекты, получающаяся страница будет неполной.
Таким образом, iText 7 регистрируется AddPage
была ли рассматриваемая страница создана в целевом документе или нет, и в последнем случае выдает исключение для предотвращения пропуска зависимых объектов.
Для копирования страниц по документам есть PdfDocument
метод CopyPagesTo
со многими перегрузками. Например, для вас
PdfDocument template = new PdfDocument(reader);
using (var pdf = new PdfDocument(writer))
{
// copy template pages 1..1 to pdf as target page 1 onwards
template.CopyPagesTo(1, 1, pdf, 1);
}
(Осторожно, если на странице есть дополнения, вы можете выбрать перегрузку этого метода, которая принимает дополнительные IPdfPageExtraCopier
Например, для полей AcroForm PdfPageFormCopier
.)