Skip to main content
Skip table of contents

How to merge PDFs and add bookmarks?

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

Posted on StackOverflow on May 15, 2014 by user3642526

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 outlines object:

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 kids:

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 Page.

Once you're finished, add the outlines to the copy object:

copy.setOutlines(outlines);

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.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.