pdf - How to make PdfLayer.SetPrint work with PdfStamper? -



pdf - How to make PdfLayer.SetPrint work with PdfStamper? -

i'm adding watermarks on existing pdf using itext pdfstamper class. , want these watermarks switched on or off, i'm using class pdflayer. want these watermarks visible when file printed : i'm using function pdflayer.setprint() then. this lastly step unfortunately doesn't work expected.

here's code :

pdfreader reader = new pdfreader("c:/temp/input.pdf"); pdfstamper stamp = new pdfstamper(reader, new fileoutputstream("c:/temp/output.pdf")); pdfwriter author = stamp.getwriter(); pdflayer layer = new pdflayer("watermarks", writer); layer.seton(true); layer.setprint("watermarks", true); basefont bf = basefont.createfont(); pdfcontentbyte cb = stamp.getovercontent(1); cb.begintext(); cb.setfontandsize(bf, 18); cb.beginlayer(layer); cb.showtextaligned(element.align_left, "watermark line 1", 50, 55, 0); cb.showtextaligned(element.align_left, "watermark line 2", 50, 40, 0); cb.endlayer(); cb.endtext(); stamp.close(); reader.close();

when check layer properties adobe reader (version 10), see "initial state : print" property stays @ "prints when visible" while should "always print".

i tried creating layers on new pdf document , there setprint() works.

what doing wrong ?

i have same problem. workaround, can utilize new document , getimportedpage instead of pdfstamper. unfortunately, loose hyperlink because pages converted images. tried utilize pdfcopy reproduced same issue. interested in solution allowing me add together watermark without changing source file. degraded sample solution :

pdfreader pdfreaders = new pdfreader(filepaths); document document = new document(pdfreaders.getpagesizewithrotation(1)); pdfwriter pdfwriterd = pdfwriter.getinstance(document, new fileoutputstream(filepathd)); document.open(); pdfcontentbyte pdfcontentbyted = pdfwriterd.getdirectcontent(); basefont basefont = basefont.createfont(basefont.helvetica, basefont.winansi, basefont.embedded); int n = pdfreaders.getnumberofpages(); pdflayer pdflayer = new pdflayer("watermark", pdfwriterd); pdflayer.setprint("print", true); pdflayer.setview(visiblescreen); (int = 1; <= n; i++) { rectangle pagesizes =pdfreaders.getpagesizewithrotation(i); float pagewidth = pagesizes.getwidth() / 2; float pageheight = pagesizes.getheight() / 2; float grade = (float)(math.todegrees(math.atan(pagesizes.getheight()/pagesizes.getwidth()))); document.setpagesize(pagesizes); document.newpage(); pdfimportedpage pdfimportedpage = pdfwriterd.getimportedpage(pdfreaders, i); int rotation = pdfreaders.getpagerotation(i); //this value can 0, 90, 180 or 270. if (rotation == 0) pdfcontentbyted.addtemplate(page, 1, 0, 0, 1, 0, 0); else if (rotation == 90) pdfcontentbyted.addtemplate(page, 0, -1, 1, 0, 0, pagesizes.getheight()); else if (rotation == 180) pdfcontentbyted.addtemplate(page, -1, 0, 0, -1, pagesizes.getheight(), pagesizes.getwidth()); else if (rotation == 270) pdfcontentbyted.addtemplate(page, 0, 1, -1, 0, pagesizes.getwidth(), 0); pdfcontentbyted.beginlayer(pdflayer); pdfcontentbyted.begintext(); pdfcontentbyted.setfontandsize(basefont, policesize); pdfcontentbyted.setcolorfill(col); pdfcontentbyted.showtextaligned(pdfcontentbyte.align_center, text, pagewidth, pageheight, degree); pdfcontentbyted.endtext(); pdfcontentbyted.endlayer(); } document.close(); pdfreaders.close();

pdf itext

Comments

Popular posts from this blog

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -