如何使用iText将书签添加到现有PDF?
我将多个PDF合并为一个PDF,并且需要为最终PDF构建书签。例如,我有三个PDF:doc1.pdf,doc2.pdf和doc3.pdf,doc1和doc2属于Group1,doc3属于Group2。我需要合并它们,并且必须为生成的PDF构建嵌套书签,如下所示:
Group1
doc1
doc2
Group2
doc3
等等
我已经制作了一个MergeWithOutlines示例,该示例使用PdfCopy
(我假设您已经知道该部分)连接了三个现有的PDF
。
这样做时,我创建了一个outlines
像这样的对象:
ArrayList<HashMap<String, Object>> outlines = new ArrayList<HashMap<String, Object>>();
然后向该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);
当我想要一些层次时,我介绍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);
如果要输入没有链接的条目,请删除放置Action
和的行Page
。
完成后,将轮廓添加到复制对象:
copy.setOutlines(outlines);
查看生成的PDF,您将在书签面板中看到轮廓。
我正在使用旧版本的iText(2.1.7)来合并PDF。因为这是MPL的最后一个版本。我无法改变这一点。 不管怎样。我正在尝试合并多个PDF。一切似乎都正常工作,但当我翻阅大约1500页时,生成的PDF无法打开(表现得好像它被破坏了一样)
我想合并成一个新的pdf多个pdf文件,并在每个页面上添加文具。 为此,我使用了PdfWriter,如下所示: } 但这是错误的:根据原始pdf,结果有时是错误的。方向不正确。然后我在这里找到了该行为函数的答案,该函数可以使用iText将PDF连接/合并在一起,从而导致一些问题 = } 这一次的结果在任何情况下都是好的:所有页面都处于良好的方向。 但是生成的pdf比以前的代码快10倍。经过分析,我
在我的项目中,我按书签拆分了一个pdf文件。应该创建一个新的pdf文件,其中包含拆分的页面和一些新的书签。 这将导致以下异常: 线程“main”java.io.ioException中的异常:COSStream已关闭,无法读取。也许它所附的PDDocument已经关闭了? 如果删除行,则新的pdf包含拆分的页面(没有例外),但显然不包含书签。我想我尝试添加书签的方式有问题。 我的代码: Stack
//步骤1:创建文档-对象文档Document=new Document(); 提前道谢。
问题内容: 我正在尝试使用itext java api将anchor(命名为destinations)添加到pdf。但是它不起作用。当我单击文本时,什么也没有发生。这就是我在做什么。 我究竟做错了什么?。任何帮助 问题答案: 试试这个。它为我工作。并会做魔术。
问题内容: 我正在尝试使用具有以下代码的iText 7创建PDF文档,并且生成时,我的PDF文档内容在同一页面中重叠(即,在第1页中)。 我看到了 document.newPage(); iText 7中缺少该方法。如何在itext 7中不使用pdfDocumet.copyPages(…)或PDFmerger将页面添加到我的PDF文档中。 问题答案: 在iText 7中,该方法已成为区域中断的特殊