android - How to draw border for whole pdf pages using iText library 5.5.2 -
as in title mentioned, how draw border "red" color , width-stroke 5 generated pdf pages using itext library. i've tried codes got no result.
(1)
pdfptable table = new pdfptable(1); table.setwidthpercentage(99); table.setlockedwidth(true); pdfpcell cell = new pdfpcell(); cell.setfixedheight(pagesize.a4.getheight()); document.add(table); (2)
pdfcontentbyte content = pdfwriter.getinstance(document, fout).getdirectcontent(); rectangle pagerect = document.getpagesize(); pagerect.setleft(pagerect.getleft() + 10); pagerect.setright(pagerect.getright() - 10); pagerect.settop(pagerect.gettop() - 10); pagerect.setbottom(pagerect.getbottom() +10); content.setcolorstroke( basecolor.blue); content.rectangle(pagerect.getleft(), pagerect.getbottom(), pagerect.getwidth(), pagerect.getheight()); content.setlinewidth(10); content.stroke(); content.fillstroke(); those methods give me no result, thanks!
edit
i've changed methods bruno lowagie respond. example worked charm couldn't fit code.
here's code: pressing button, pdf file generate @ specif address. i'll add more content later let's stick generating pdf file(s).
savetosd = (button)findviewbyid(r.id.savetomemorycard_xml); savetosd.setonclicklistener(new onclicklistener() { @override public void onclick(view sssdd) { string path = environment.getexternalstoragedirectory().getabsolutepath() + "/concreteproject"; file dir = new file(path); if (!dir.exists()) dir.mkdirs(); log.d("pdfcreator", "pdf path: " + path); // incremental process of creating file(s). string pdfname = "sdg_created_pdf.pdf"; int num = 0; file file = new file(dir, pdfname); while (file.exists()) { num++; pdfname = "sdg_created_pdf" + num + ".pdf"; file = new file(dir, pdfname); } try { new conaccept_result().createpdf(pdfname); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } catch (documentexception e) { // todo auto-generated catch block e.printstacktrace(); } }//end of onclick(view sssdd). }); and here method/class definitions:
public class redborder extends pdfpageeventhelper { @override public void onendpage(pdfwriter writer, document document) { pdfcontentbyte canvas = writer.getdirectcontent(); rectangle rect = document.getpagesize(); rect.setborder(rectangle.box); // left, right, top, bottom border rect.setborderwidth(5); // width of 5 user units rect.setbordercolor(basecolor.red); // red border rect.setusevariableborders(true); // full width visible canvas.rectangle(rect); } } public void createpdf(string stringfile) throws ioexception, documentexception { // step 1 com.itextpdf.text.document document = new com.itextpdf.text.document(); // step 2 pdfwriter writer = pdfwriter.getinstance(document, new fileoutputstream(stringfile)); redborder event = new redborder(); writer.setpageevent(event); // step 3 document.open(); // step 4 chunk chunk = new chunk("lovin' itext - lovin' itext"); chunk.settextrendermode(pdfcontentbyte.text_render_mode_fill_stroke, 0.3f, basecolor.cyan); document.add(chunk); // step 5 document.close(); } after running da app folder named created there no pdf file !
thanks lot..
reading question, seems obvious need page event. attempts add border once whereas want add border each page.
please take @ pageborder example. in example, you'll find implementation of pageevents interface named redborder:
public class redborder extends pdfpageeventhelper { @override public void onendpage(pdfwriter writer, document document) { pdfcontentbyte canvas = writer.getdirectcontent(); rectangle rect = document.getpagesize(); rect.setborder(rectangle.box); // left, right, top, bottom border rect.setborderwidth(5); // width of 5 user units rect.setbordercolor(basecolor.red); // red border rect.setusevariableborders(true); // full width visible canvas.rectangle(rect); } } the onendpage() method triggered automatically, every time page ends (do not use theonstartpage() method add content).
in implementation of method, ask document object current page size. note document instance passed event of type pdfdocument. not same document used in createpdf() method.
we adapt rectangle our needs. set border box meaning want add border left, right, top , bottom. define width of border (in case 5 user units) , define color.
if stop there, rectangle border of 5 user units drawn, see lines of 2.5 user units because other half of 5 user units outside visible area of page.
you can avoid using width of 10 user units, or setting variable borders flag true.
now have pass rect object rectangle() method. method different method same name have used in sense strokes rectangle.
Comments
Post a Comment