我对PDF文档有疑问。如何将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: Page com.itextpdf.kernel.pdf.PdfPage@6576eb4b 不能添加到 document com.itextpdf.kernel.pdf.PdfDocument@286ef136,因为它属于 document com.itextpdf.kernel.pdf.PdfDocument@2c74aa66。
1 回答

手掌心
TA贡献1942条经验 获得超3个赞
PDF 中的页面与 PDF 中的其他对象有许多关系。
如果可以将位于一个文档中的页面添加到另一个文档中,则该页面将驻留在这两个文档中。因此,页面突然必须与两个文档中的对象具有所有这些关系。这显然不起作用,因此iText可以防止这种情况。
相反,您必须创建相关页面的副本,该页面的关系将切换到目标文档中的文档。
对于此任务,有多个 方法重载。因此,这些方法确实是要使用的方法。PdfDocument.copyPagesTo
不幸的是,您错误地操作的源和目标:
PdfDocument pdfWithMultiplePages = here I have a PDF with 3 pages. ....PdfDocument pdfDocument = new PdfDocument(pdfWriter); pdfDocument.copyPagesTo(i+1, i+1,pdfWithMultiplePages);
这将尝试将页面从 复制到 。但是您只是从头开始创建,因此它没有任何页面。你最可能想要的是:i+1
pdfDocument
pdfWithMultiplePages
pdfDocument
pdfWithMultiplePages.copyPagesTo(i+1, i+1, pdfDocument);
添加回答
举报
0/150
提交
取消