【发布时间】:2019-11-17 21:54:30
【问题描述】:
我正在尝试将两个 pdf src1 和 src2 与书签合并,我使用 itext7 来合并 pdf。 pdf 正确合并但书签无法正常工作,来自 scr1 pdf 的书签在合并文档中始终分别指向 scr2 pdf。
scr1 书签1 ==> 指向src2 书签1
dfDocument pdfDoc = new PdfDocument(new PdfWriter(DEST));
PdfMerger merger = new PdfMerger(pdfDoc);
PdfDocument srcDoc1 = new PdfDocument(new PdfReader(SRC1));
PdfOutline rootOutline = pdfDoc.getOutlines(false);
PdfOutline srcOutline = srcDoc1.getOutlines(false);
PdfDocument srcDoc2 = new PdfDocument(new PdfReader(SRC2));
merger.merge(srcDoc1, 1, srcDoc1.getNumberOfPages());
merger.merge(srcDoc2, 1, srcDoc2.getNumberOfPages());
merger.close();
srcDoc1.close();
srcDoc2.close();
pdfDoc.close();
源 1 pdf 的书签始终指向源 2 pdf,源 2 pdf 书签在合并的 pdf 文档中正常工作。
请任何人帮我解决这个问题,我已经尝试了几种方法来重新指向目标并覆盖合并文档中的目标点,注意没有正确解决。
dfDocument pdfDoc = new PdfDocument(new PdfWriter(DEST));
PdfMerger merger = new PdfMerger(pdfDoc);
PdfDocument srcDoc1 = new PdfDocument(new PdfReader(SRC1));
PdfOutline rootOutline = pdfDoc.getOutlines(false);
PdfOutline srcOutline = srcDoc1.getOutlines(false);
PdfDocument srcDoc2 = new PdfDocument(new PdfReader(SRC2));
merger.merge(srcDoc1, 1, srcDoc1.getNumberOfPages());
merger.merge(srcDoc2, 1, srcDoc2.getNumberOfPages());
for(PdfOutline o : rootOutline.getAllChildren()) {
o.addDestination(PdfDestination.makeDestination(new PdfString(o.getTitle().toString())));
}
merger.close();
srcDoc1.close();
srcDoc2.close();
pdfDoc.close();
【问题讨论】:
标签: java itext pdf-generation bookmarks itext7