iText PDF-将两个pdf与PdfCopy合并后,PDFActions(PdfAction.gotoLocalPage)丢失/不起作用

时间:2018-07-26 09:25:14

标签: java pdf itext pdf-generation

我创建了PDF文档file1.pdf和file2.pdf(几乎类似的文件,但数据不同)。每个文件都有其自己的目录,该目录具有PdfAction,单击目录中的一个元素,即可导航到相应文档中的相应页面。它可以正常工作。

我使用以下代码在TOC元素上设置了操作

Chunk chunk = new Chunk("Analysis Report");
chunk.setAction(PdfAction.gotoLocalPage(title, true));

问题在于...

在合并这两个文档时,使用PDFCopy在新的合并的PDF中丢失了我在源PDF中设置的操作。

下面是我用来合并两个PDF文档的代码。


File file1 = new File("file1.pdf");
PdfReader reader1 = new PdfReader(file1.getAbsolutePath());

File file2 = new File("file2.pdf");
PdfReader reader2 = new PdfReader(file2.getAbsolutePath());

File tempDestFile = File.createTempFile("temp", ".pdf");
Document document = TemplateHelper.getDocument(PageSize.A4);
PdfCopy copy = new PdfSmartCopy(document, new FileOutputStream(tempDestFile.getAbsolutePath()));

document.open();

copy.addDocument(reader1);
copy.addDocument(reader2);

document.close();
copy.close();
reader1.close();

1 个答案:

答案 0 :(得分:0)

您可以使用Apache PDF合并两个PDF。

下面是示例代码段。

    PDFMergerUtility ut = new PDFMergerUtility();
    ut.addSource(file1);
    ut.addSource(file2);
    ut.setDestinationFileName("done.pdf");
    ut.mergeDocuments(); 

对Apache PDF框使用以下依赖项。

 <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.11</version>
</dependency>