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

我对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。


函数式编程
浏览 365回答 1
1回答

手掌心

PDF 中的页面与 PDF 中的其他对象有许多关系。如果可以将位于一个文档中的页面添加到另一个文档中,则该页面将驻留在这两个文档中。因此,页面突然必须与两个文档中的对象具有所有这些关系。这显然不起作用,因此iText可以防止这种情况。相反,您必须创建相关页面的副本,该页面的关系将切换到目标文档中的文档。对于此任务,有多个 方法重载。因此,这些方法确实是要使用的方法。PdfDocument.copyPagesTo不幸的是,您错误地操作的源和目标:PdfDocument&nbsp;pdfWithMultiplePages&nbsp;=&nbsp;here&nbsp;I&nbsp;have&nbsp;a&nbsp;PDF&nbsp;with&nbsp;3&nbsp;pages. ....PdfDocument&nbsp;pdfDocument&nbsp;=&nbsp;new&nbsp;PdfDocument(pdfWriter); pdfDocument.copyPagesTo(i+1,&nbsp;i+1,pdfWithMultiplePages);这将尝试将页面从 复制到 。但是您只是从头开始创建,因此它没有任何页面。你最可能想要的是:i+1pdfDocumentpdfWithMultiplePagespdfDocumentpdfWithMultiplePages.copyPagesTo(i+1,&nbsp;i+1,&nbsp;pdfDocument);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java