在java中使用iText合并pdf并添加书签

use*_*526 1 java pdf bookmarks itext

如何使用 iText 将书签添加到现有 PDF?

我正在将多个 PDF 合并为一个 PDF,并且需要为最终的 PDF 构建书签。例如,我有三个PDF:doc1.pdf、doc2.pdf和doc3.pdf,doc1和doc2属于Group1,doc3属于Group2。我需要合并它们,并且必须为生成的 PDF 构建嵌套书签,如下所示:

Group1 
   doc1  
   doc2  
Group2 
   doc3 
Run Code Online (Sandbox Code Playgroud)

ETC。

Bru*_*gie 5

我制作了一个MergeWithOutlines示例,使用它连接三个现有的 PDF PdfCopy(我假设您已经知道该部分)。

这样做时,我创建了一个outlines像这样的对象:

ArrayList<HashMap<String, Object>> outlines = new ArrayList<HashMap<String, Object>>();
Run Code Online (Sandbox Code Playgroud)

我向该outlines对象添加元素:

HashMap<String, Object> helloworld = new HashMap<String, Object>();
helloworld.put("Title", "Hello World");
helloworld.put("Action", "GoTo");
helloworld.put("Page", String.format("%d Fit", page));
outlines.add(helloworld);
Run Code Online (Sandbox Code Playgroud)

当我想要一些层次结构时,我介绍kids

ArrayList<HashMap<String, Object>> kids = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> link1 = new HashMap<String, Object>();
link1.put("Title", "link1");
link1.put("Action", "GoTo");
link1.put("Page", String.format("%d Fit", page));
kids.add(link1);
helloworld.put("Kids", kids);
Run Code Online (Sandbox Code Playgroud)

如果您想要不带链接的条目,请删除放置 anAction和 a的行Page

完成后,将轮廓添加到复制对象:

copy.setOutlines(outlines);
Run Code Online (Sandbox Code Playgroud)

查看生成的 PDF,您将在书签面板中看到轮廓。