c# - iTextsharp - Repeat a html table on top of every page -
i plan create invoice using itextsharp, inside invoice, consist of 3 parts
- table on top of page ( include vendor information)
- gridview (item of purchase)
- signature part (only in last page of invoice)
so far complete gridview part using pdfptable + splitlate
pdfptable table = new pdfptable(gv.columns.count); table.addcell(new pdfpcell(new phrase(celltext, fonth1))); ... ... //create pdf document document pdfdoc = new document(pagesize.a4, -30, -30, 15f, 15f); pdfwriter.getinstance(pdfdoc, response.outputstream); pdfdoc.open(); pdfdoc.add(table); pdfdoc.close(); response.contenttype = "application/pdf"; response.addheader("content-disposition", "attachment;" + "filename=gridviewexport.pdf"); response.cache.setcacheability(httpcacheability.nocache); response.write(pdfdoc); response.end();
but have no idea how insert table on every page. plan use html table because quite many thing need control, difference vendor, addrress, show/hide or cancelled image. please help.
your question has been asked before. see how add html headers , footers page? in official documentation, or take @ how add html headers , footers page? on stackoverflow.
the answer roman sidorov wrong, because roman assumes triggering newpage()
code. isn't true. add table document
, , table spans multiple pages. means itext triggers newpage()
function internally.
you can add content every page created, using page events. onendpage()
event triggered right before newpage()
action performed. when add content current page. onstartpage()
event triggered right after newpage()
action performed. forbidden add content in onstartpage()
event. see itextsharp - header , footer pages
this example of page event implementation in java:
public class headerfooter extends pdfpageeventhelper { protected elementlist header; protected elementlist footer; public headerfooter() throws ioexception { header = xmlworkerhelper.parsetoelementlist(header, null); footer = xmlworkerhelper.parsetoelementlist(footer, null); } @override public void onendpage(pdfwriter writer, document document) { try { columntext ct = new columntext(writer.getdirectcontent()); ct.setsimplecolumn(new rectangle(36, 832, 559, 810)); (element e : header) { ct.addelement(e); } ct.go(); ct.setsimplecolumn(new rectangle(36, 10, 559, 32)); (element e : footer) { ct.addelement(e); } ct.go(); } catch (documentexception de) { throw new exceptionconverter(de); } } }
you can port c#. used answer because literal answer literal question. however: why define header (or footer) in html. doesn't make sense, it?
why don't create pdfptable
, add every page in page event. explained in answer question how add table header? there many other examples in page events section of official documentation.
Comments
Post a Comment