I am merging multiple PDFs together into one PDF and I need to build bookmarks for the final PDF. For example, I have three PDFs: doc1.pdf, doc2.pdf and doc3.pdf, doc1 and doc2 belong to Group1, doc3 belongs to Group2. I need to merge them and have to build nested bookmarks for the resulting PDFs like this:
Group1 doc1 doc2 Group2 doc3
I've made a MergeWithOutlines example that concatenates three existing PDFs using
PdfCopy (I assume that you already know that part).
While doing so, I create an
outlines object like this:
ArrayList> outlines = new ArrayList>();
and I add elements to this
HashMap helloworld = new HashMap(); helloworld.put("Title", "Hello World"); helloworld.put("Action", "GoTo"); helloworld.put("Page", String.format("%d Fit", page)); outlines.add(helloworld);
When I want some hierarchy, I introduce
ArrayList> kids = new ArrayList>(); HashMap link1 = new HashMap(); link1.put("Title", "link1"); link1.put("Action", "GoTo"); link1.put("Page", String.format("%d Fit", page)); kids.add(link1); helloworld.put("Kids", kids);
If you want an entry without a link, remove the lines that put an
Action and a
Once you're finished, add the outlines to the copy object:
Look at the resulting PDF and you'll see the outlines in the bookmarks panel.
Click this link if you want to see how to answer this question in iText 7.