How to create multi page table of content using itext in java -


i using example mergewithtoc2.java create toc. have tried couple of things resolve issue didn't succeed.

public class mergewithtoc2 {      public static final string src1 = "positionpdf.pdf";     public static final string src2 = "concatenated1.pdf";     public static final string src3 = "new_page.pdf";     public static final string dest = "test/merge_with_toc2.pdf";      public map<string, pdfreader> filestomerge;      public static void main(string[] args) throws ioexception, documentexception {     file file = new file(dest);     file.getparentfile().mkdirs();     mergewithtoc2 app = new mergewithtoc2();     app.createpdf(dest);     }      public mergewithtoc2() throws ioexception {     filestomerge = new treemap<string, pdfreader>();     for(int i=0 ; <50 ; i++ ){     filestomerge.put(i + "hello world", new pdfreader(src1));     //filestomerge.put("02 movies / countries", new pdfreader(src2));     }     }      public void createpdf(string filename) throws ioexception, documentexception {      bytearrayoutputstream baos = new bytearrayoutputstream();     map<integer, string> toc = new treemap<integer, string>();     document document = new document();     pdfcopy copy = new pdfcopy(document, baos);     pagestamp stamp;     document.open();     int n;     int pageno = 0;     pdfimportedpage page;     chunk chunk;     (map.entry<string, pdfreader> entry : filestomerge.entryset()) {         n = entry.getvalue().getnumberofpages();         toc.put(pageno + 1, entry.getkey());         (int = 0; < n; ) {             pageno++;             page = copy.getimportedpage(entry.getvalue(), ++i);             stamp = copy.createpagestamp(page);             chunk = new chunk(string.format("page %d", pageno));             if (i == 1)                 chunk.setlocaldestination("p" + pageno);             columntext.showtextaligned(stamp.getundercontent(),                     element.align_right, new phrase(chunk),                     559, 810, 0);             stamp.altercontents();             copy.addpage(page);         }     }     pdfreader reader = new pdfreader(src3);     page = copy.getimportedpage(reader, 1);     stamp = copy.createpagestamp(page);            paragraph p;     pdfaction action;     pdfannotation link;     float y = 770;     columntext ct = new columntext(stamp.getovercontent());     ct.setsimplecolumn(36, 36, 559, y);     (map.entry<integer, string> entry : toc.entryset()) {          p = new paragraph(entry.getvalue());         p.add(new chunk(new dottedlineseparator()));         p.add(string.valueof(entry.getkey()));         ct.addelement(p);         ct.go();         action = pdfaction.gotolocalpage("p" + entry.getkey(), false);         link = new pdfannotation(copy, 36, ct.getyline(), 559, y, action);         stamp.addannotation(link);         y = ct.getyline();     }     ct.go();     stamp.altercontents();     copy.addpage(page);     document.close();     (pdfreader r : filestomerge.values()) {         r.close();     }     reader.close();      reader = new pdfreader(baos.tobytearray());     n = reader.getnumberofpages();     reader.selectpages(string.format("%d, 1-%d", n, n-1));     pdfstamper stamper = new pdfstamper(reader, new fileoutputstream(filename));     stamper.close();         } } 


Comments