Chúng tôi đang sử dụng itextsharp để tạo một tệp PDF từ nhiều tệp PDF. Làm cách nào để chèn một trang mới vào một tệp PDF có nhiều trang đã có trong tệp? Khi tôi sử dụng trang thêm, nó sẽ ghi đè lên các trang hiện có và chỉ lưu 1 trang đã được chọn.Chèn trang vào tệp PDF hiện có bằng itextsharp
Đây là mã mà tôi đang sử dụng để thêm trang để PDF hiện có:
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();
Tôi đang cố gắng để có được các trang nhất định từ một nguồn PDF và thêm chúng vào một file PDF hiện có. Vấn đề duy nhất là nó không thêm nó vào tệp PDF hiện có mà chỉ ghi đè lên nó. –
@Rob: Vì một lý do nào đó, tôi đã không hiểu điều đó từ câu hỏi gốc. Vấn đề của bạn có thể được phục hồi khi cần phải kết hợp các trang nhất định (bao gồm tất cả) từ tài liệu nguồn vào một tệp không? Có nghĩa là một tệp PDF hiện có trở thành một trong những nguồn có tất cả các trang được yêu cầu? –