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
Post a Comment