java - Split a PdfTable in next page -
how split pdftable
in next page in java?
i generating pdf document using itext in java. pdf has header , table. when table continues next page, 2 rows of table overlaps header. how display remaining table rows below header in next page. here using header_footer java class , call object of header_footer in jsp page like-
header_footer event = new header_footer(); writer.setpageevent(event);
my header_footer class give below
/* * change template, choose tools | templates * , open template in editor. */ package mis4acjml; import java.io.fileoutputstream; import java.io.ioexception; import com.itextpdf.text.document; import com.itextpdf.text.documentexception; import com.itextpdf.text.element; import com.itextpdf.text.exceptionconverter; import com.itextpdf.text.image; import com.itextpdf.text.pagesize; import com.itextpdf.text.paragraph; import com.itextpdf.text.phrase; import com.itextpdf.text.rectangle; import com.itextpdf.text.pdf.columntext; import com.itextpdf.text.pdf.pdfpcell; import com.itextpdf.text.pdf.pdfptable; import com.itextpdf.text.pdf.pdfpageeventhelper; import com.itextpdf.text.pdf.pdftemplate; import com.itextpdf.text.pdf.pdfwriter; /** * * @author kanika */ public class header_footer extends pdfpageeventhelper{ string header; pdftemplate total; /** * allows change content of header. * @param header new header string */ public header_footer() { header="the assam co-operative jute mills ltd."; } public void setheader(string header) { this.header = header; } /** * creates pdftemplate hold total number of pages. * @see com.itextpdf.text.pdf.pdfpageeventhelper#onopendocument( * com.itextpdf.text.pdf.pdfwriter, com.itextpdf.text.document) */ public void onopendocument(pdfwriter writer, document document) { total = writer.getdirectcontent().createtemplate(30, 16); } /** * adds header every page * @see com.itextpdf.text.pdf.pdfpageeventhelper#onendpage( * com.itextpdf.text.pdf.pdfwriter, com.itextpdf.text.document) */ public void onendpage(pdfwriter writer, document document) { pdfptable table = new pdfptable(3); try { table.setwidths(new int[]{24, 24, 2}); table.settotalwidth(527); table.setlockedwidth(true); table.getdefaultcell().setfixedheight(20); table.getdefaultcell().setborder(rectangle.bottom); table.addcell(header); table.getdefaultcell().sethorizontalalignment(element.align_right); table.addcell(string.format("page %d of", writer.getpagenumber())); pdfpcell cell = new pdfpcell(image.getinstance(total)); cell.setborder(rectangle.bottom); table.addcell(cell); table.writeselectedrows(0, -1, 34, 803, writer.getdirectcontent()); } catch (documentexception de) { throw new exceptionconverter(de); } } /** * fills out total number of pages before document closed. * * @see com.itextpdf.text.pdf.pdfpageeventhelper#onclosedocument( * com.itextpdf.text.pdf.pdfwriter, com.itextpdf.text.document) */ public void onclosedocument(pdfwriter writer, document document) { columntext.showtextaligned(total, element.align_left,new phrase(string.valueof(writer.getpagenumber() - 1)),2, 2, 0); } } `
the problem needs solved in code you're not showing. you're adding header @ position x = 34, y = 803. assume you're creating document
object this:
document document = new document();
this means you're creating document a4 pages , margins of 36 user units (half inch).
a4 means height of document 842. if substract margin, have y = 806 top margin. you're adding @ position 803, need larger top margin. see constructor of document class more info.
for instance:
document document = new document(pagesize.a4, 36, 36, 72, 36);
Comments
Post a Comment