itext - How can I add titles of chapters in ColumnText? -
please, how can add titles of chapters in columntext? need make pdf this:
| columntext column1 | columntext column2 | | pdfptable content | pdfptable content | | | chapter 2 title | | chapter 1 title | | and add toc document. make document columntext , table in it. can't add chapter in table. can add chapter document body, in case title of chapter not in columntext.
your question isn't clear in sense don't tell if want toc this:

if case, using wrong terminology, see in bookmarks panel can referred outlines or bookmarks.
if want toc, want this:

i mention both, because talk chapter (a class should no longer use) , class creates bookmarks/outlines, not toc.
i have create pdf file has both, bookmarks , toc: columns_with_toc.pdf. please take @ createtocincolumn example find out how it's done.
just you, create columntext object titles , tables:
columntext ct = new columntext(writer.getdirectcontent()); int start; int end; (int = 0; <= 20; ) { start = (i * 10) + 1; i++; end = * 10; string title = string.format("numbers %s %s", start, end); chunk c = new chunk(title); c.setgenerictag(title); ct.addelement(c); ct.addelement(createtable(start, end)); } int column = 0; { if (column == 3) { document.newpage(); column = 0; } ct.setsimplecolumn(columns[column++]); } while (columntext.hasmoretext(ct.go())); the result looks this:

in spite of rules posting question on stackoverflow, didn't post code sample, there @ least 1 difference between code , mine:
c.setgenerictag(title); in line, declare generic tag. tag used tocentry class looks this:
public class toccreation extends pdfpageeventhelper { protected pdfoutline root; protected list<tocentry> toc = new arraylist<tocentry>(); public toccreation() { } public void setroot(pdfoutline root) { this.root = root; } public list<tocentry> gettoc() { return toc; } @override public void ongenerictag(pdfwriter writer, document document, rectangle rect, string text) { pdfdestination dest = new pdfdestination(pdfdestination.xyz, rect.getleft(), rect.gettop(), 0); new pdfoutline(root, dest, text); tocentry entry = new tocentry(); entry.action = pdfaction.gotolocalpage(writer.getpagenumber(), dest, writer); entry.title = text; toc.add(entry); } } as can see, create pdfdestination based on position of title:
pdfdestination dest = new pdfdestination(pdfdestination.xyz, rect.getleft(), rect.gettop(), 0); if want bookmarks, can create pdfoutline this:
new pdfoutline(root, dest, text); if want toc, can store string , pdfaction in list:
tocentry entry = new tocentry(); entry.action = pdfaction.gotolocalpage(writer.getpagenumber(), dest, writer); entry.title = text; toc.add(entry); now understand toccreation class, take @ how use it:
pdfwriter writer = pdfwriter.getinstance(document, new fileoutputstream(dest)); toccreation event = new toccreation(); writer.setpageevent(event); document.open(); event.setroot(writer.getrootoutline()) we create event object, pass writer , after we've opened document, pass root of outline tree event. bookmarks created automatically, toc won't. if want add toc, need this:
document.newpage(); (tocentry entry : event.gettoc()) { chunk c = new chunk(entry.title); c.setaction(entry.action); document.add(new paragraph(c)); } you have list of titles can click jump corresponding table.
Comments
Post a Comment