pdf - How to rotate Document pages to come out landscape? -
i'm using mpl/lgpl version of itext library (the 1 released in july 2009) download pdfs through web application. issue gsp being rendered on pdf has landscape layout. have code:
public void mergemultiplepdffiles(list<string> filenames, outputstream os, string filedirectory, boolean islandscape = false) { fileinputstream pdfreader pdfreader pdfwriter pdfwriter com.lowagie.text.document document try { document = new com.lowagie.text.document(islandscape ? pagesize.letter.rotate() : pagesize.letter) pdfwriter = pdfwriter.getinstance(document, os) document.open() pdfimportedpage page pdfcontentbyte cb = pdfwriter.getdirectcontent() // holds pdf filenames.each { filename -> def filepath = filedirectory + filename + ".pdf" = new fileinputstream(filepath) pdfreader = new pdfreader(is) for(int = 1; <= pdfreader.getnumberofpages(); i++) { document.newpage() page = pdfwriter.getimportedpage(pdfreader, i) //cb.addtemplate(page, 0.0, -1f, 1f, 0.0, 0.0, pdfreader.getpagesizewithrotation(i).height); cb.addtemplate(page, 0, 0); } is.close() pdfreader.close(); file file = new file(filepath) file.delete() } } catch (exception e) { log.error("error generating pdf.") //e.printstacktrace() throw e } { if (document.isopen()) document.close() try { if (os != null) os.close() if (is != null) is.close() if (pdfreader != null) pdfreader.close() if (pdfwriter != null) pdfwriter.close() } catch (ioexception ioe) { ioe.printstacktrace(); } } } this code creates pdf rendered page in portrait. so, user has rotate pdf landscape read document. want have pdf rotated landscape before downloading file. i've attempted many solution such as: document = new com.lowagie.text.document(pagesize.letter.rotate())
or alternatively, document.setpagesize(pagesize.letter.rotate())
these 2 solution cause pdf set landscape text cut off in portrait view. also,
and rot = pdfreader.getpagerotation(i); pagedict = pdfreader.getpagen(i); pagedict.put(pdfname.rotate, new pdfnumber(rot + 90)); rot = pdfreader.getpagerotation(i);
none of these suggested solutions work.
thanks bruno's comment got document downloaded in landscape. here code:
public void mergemultiplepdffiles(list<string> filenames, outputstream os, string filedirectory, boolean islandscape = false) { fileinputstream pdfreader pdfreader com.lowagie.text.document document try { document = new com.lowagie.text.document() pdfcopy copy = new pdfcopy(document, os); document.open(); pdfimportedpage page; chunk chunk; filenames.each { filename -> def filepath = filedirectory + filename + ".pdf" = new fileinputstream(filepath) pdfreader = new pdfreader(is) for(int = 1; <= pdfreader.getnumberofpages(); i++) { page = copy.getimportedpage(pdfreader, i); copy.addpage(page); } copy.freereader(pdfreader); is.close() pdfreader.close(); file file = new file(filepath) file.delete() } } catch (exception e) { log.error("error generating pdf.") //e.printstacktrace() throw e } { if (document.isopen()) document.close() try { if (os != null) os.close() if (is != null) is.close() if (pdfreader != null) pdfreader.close() } catch (ioexception ioe) { ioe.printstacktrace(); } } } key change using pdfcopy instead of pdfwriter , pdfcontentbyte used.
Comments
Post a Comment