【发布时间】:2019-03-28 11:54:15
【问题描述】:
我对 PDFDocuments 有疑问。如何将 PdfDocument 对象的特定页面复制到另一个 PdfDocument 对象。
我尝试过 moveTo 方法,但它没有用,我也尝试过 copyPagesTo 方法,但我抛出一个请求页面超出范围(例如,当我尝试仅复制一页时,从 1到 1)。
有什么提示吗?
List<PdfDocument> pdfDocuments = new ArrayList<>();
PdfDocument pdfWithMultiplePages = here I have a PDF with 3 pages.
for (int i = 0 ; i<pdfWithMultiplePages.getNumberOfPages() ; i++){
final ByteArrayOutputStream byteArrayOutputStream = new
ByteArrayOutputStream();
final PdfWriter pdfWriter = new PdfWriter(byteArrayOutputStream);
PdfDocument pdfDocument = new PdfDocument(pdfWriter);
pdfDocument.copyPagesTo(i+1, i+1,pdfWithMultiplePages);
pdfWriter.close();
byteArrayOutputStream.close();
shippingLabels.add(shippingLabelSplitted);
}
我也试过这个:
List<PdfDocument> pdfDocuments = new ArrayList<>();
PdfDocument pdfWithMultiplePages = here I have a PDF with 3 pages.
for (int i = 0 ; i<pdfWithMultiplePages.getNumberOfPages() ; i++){
final ByteArrayOutputStream byteArrayOutputStream = new
ByteArrayOutputStream();
final PdfWriter pdfWriter = new PdfWriter(byteArrayOutputStream);
PdfDocument pdfDocument = new PdfDocument(pdfWriter);
pdfDocument.addPage(1,pdfWithMultiplePages.getPage(i+1));
pdfWriter.close();
byteArrayOutputStream.close();
shippingLabels.add(shippingLabelSplitted);
}
但它会抛出:
com.itextpdf.kernel.PdfException: 页面 com.itextpdf.kernel.pdf.PdfPage@6576eb4b 无法添加到文档 com.itextpdf.kernel.pdf.PdfDocument@286ef136,因为它属于文档 com.itextpdf.kernel .pdf.PdfDocument@2c74aa66.
【问题讨论】:
-
请告诉我们您尝试过的minimal reproducible example。
-
我在帖子中添加了一个 sn-p,我试图实现这样的目标:我有一个 3 页的 PdfDocument,我想创建 3 个 PdfDocument,每个都有 1 个不同的原始页面.
-
我认为当您执行
i+1时会发生这种情况,在for的最后一次迭代中,它超出了界限。 -
我怎样才能实现我的目标? getPage() 以 1 开头,而不是 0 开头。如何每次迭代只复制一页?
-
对于与特定 PDF 库相关的问题,还请在您的问题中添加匹配标签 itext7 在您的情况下。我只是在这里为你做的。