Мы используем itextsharp для создания единого PDF-файла из нескольких PDF-файлов. Как вставить новую страницу в PDF-файл с несколькими страницами уже в файле? Когда я использую страницу добавления, она переписывает существующие страницы и сохраняет только 1 страницу, которая была выбрана.Вставить страницу в существующий PDF с помощью itextsharp
Вот код, который я использую, чтобы добавить страницу к существующему PDF:
PdfReader reader = new PdfReader(sourcePdfPath);
Document document = new Document(reader.GetPageSizeWithRotation(1));
PdfCopy pdfCopy = new PdfCopy(document, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
MemoryStream memoryStream = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
document.AddDocListener(writer);
document.Open();
for (int p = 1; p <= reader.NumberOfPages; p++)
{
if (pagesToExtract.FindIndex(s => s == p) == -1) continue;
document.SetPageSize(reader.GetPageSize(p));
document.NewPage();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage pageImport = writer.GetImportedPage(reader, p);
int rot = reader.GetPageRotation(p);
if (rot == 90 || rot == 270)
{
cb.AddTemplate(pageImport, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(p).Height);
}
else
{
cb.AddTemplate(pageImport, 1.0F, 0, 0, 1.0F, 0, 0);
}
pdfCopy.AddPage(pageImport);
}
pdfCopy.Close();
Я пытаюсь получить только определенные страницы из исходного PDF и добавить их в существующий PDF. Единственная проблема заключается в том, что он не добавляет его в существующий PDF-файл, а только поверх его записи. –
@ Rob: По какой-то причине я не понял этого из первоначального вопроса. Могла ли ваша проблема переформулироваться как необходимость объединить определенные (включая все) страницы из исходных документов в один файл? Это означает, что существующий PDF становится одним из этих источников со всеми требуемыми страницами? –