为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 PDF 文档 的一页复制到另一个 PDF 文档

如何将 PDF 文档 的一页复制到另一个 PDF 文档

函数式编程 2022-09-07 21:01:32
我对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+1pdfDocumentpdfWithMultiplePagespdfDocument

pdfWithMultiplePages.copyPagesTo(i+1, i+1, pdfDocument);


查看完整回答
反对 回复 2022-09-07
  • 1 回答
  • 0 关注
  • 364 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信