List of usage examples for com.itextpdf.text.pdf PdfWriter newPage
public boolean newPage()
From source file:net.FilterLogic.imaging.ToPDF.java
License:Apache License
private void writeMultiPagePDF(String fileName) throws Exception { float STD_WIDTH = 620; float STD_HEIGHT = 775; float newWidth = 0; float newHeight = 0; float xPos = 0; float yPos = 0; boolean scaleImage = true; boolean pdfAutoOrientation = true; boolean autoCenter = false; boolean portrait = true; BufferedImage img = null;/*from w w w.j a v a 2 s . c o m*/ Document pdf; PdfWriter writer; try { // scale image String si = this.documentProperties.getProperty(KEY_SCALE_TO_FIT, KEY_SCALE_TO_FIT_DEFAULT); scaleImage = Boolean.parseBoolean(si); // auto-orientation String ao = this.documentProperties.getProperty(KEY_AUTO_ORIENTATION, KEY_AUTO_ORIENTATION_DEFAULT); pdfAutoOrientation = Boolean.parseBoolean(ao); // auto-center String ac = this.documentProperties.getProperty(KEY_AUTO_CENTER, KEY_AUTO_CENTER_DEFAULT); autoCenter = Boolean.parseBoolean(ac); if (document.size() > 0) img = document.get(0); if (img != null) { // if dpi set, calculate new width/height if (horizontalDPI > 0 && verticalDPI > 0) { float xd = (float) horizontalDPI / 100; float yd = (float) verticalDPI / 100; newWidth = img.getWidth() / xd; newHeight = img.getHeight() / yd; } else { newWidth = img.getWidth(); newHeight = img.getHeight(); } // if image width or height changed, scale if (newWidth != img.getWidth() || newHeight != img.getHeight()) scaleImage = true; // if auto orientation, set portrait or landscape if (pdfAutoOrientation) { if (newWidth >= newHeight) { pdf = new Document(PageSize.LETTER.rotate()); portrait = false; } else { pdf = new Document(PageSize.LETTER); portrait = true; } } else { // else, always portrait pdf = new Document(PageSize.LETTER); portrait = true; } writer = PdfWriter.getInstance(pdf, new FileOutputStream(fileName)); writer.setFullCompression(); pdf.open(); // set document props setDocumentProperties(pdf); int t = 0; float pdfPageWidth = pdf.getPageSize().getWidth(); float pdfPageHeight = pdf.getPageSize().getHeight(); // if new image larger than standard size, override and enable image scaling if (newWidth > pdfPageWidth || newHeight > pdfPageHeight) { scaleImage = true; if (newWidth > pdfPageWidth) newWidth = pdfPageWidth; if (newHeight > pdfPageHeight) newHeight = pdfPageHeight; } // break out each page to single file while (t < totalPages) { PdfContentByte cb = writer.getDirectContent(); com.itextpdf.text.Image pdfImage; if (img != null) { pdfImage = com.itextpdf.text.Image.getInstance(img, null); // calculate center if (autoCenter) { if (portrait) { xPos = (pdfPageWidth - newWidth) / 2; yPos = (pdfPageHeight - newHeight) / 2; } else { //xPos = ((pdfPageHeight * (float)1.60) - newWidth) / 2; xPos = (pdfPageHeight - newWidth) / 2; yPos = (pdfPageWidth - newHeight) / 2; } } else { // if not scaling, set image to top left if (!scaleImage) { xPos = 0; // calculate top left corner yPos = pdfPageWidth - newHeight; } else { xPos = 0; yPos = 0; } } // check if x and y pos >=0 if (xPos < 0) xPos = 0; if (yPos < 0) yPos = 0; if (scaleImage) { if (!portrait) { pdfImage.scaleToFit(newHeight, newWidth); } else { pdfImage.scaleToFit(newWidth, newHeight); } // check is scaled height/width match new width/height // if not, recalculate center if autcenter enabled. if (newWidth != pdfImage.getScaledWidth() || newHeight != pdfImage.getScaledHeight()) { newWidth = pdfImage.getScaledWidth(); newHeight = pdfImage.getScaledHeight(); // calculate center if (autoCenter) { xPos = (pdfPageWidth - newWidth) / 2; yPos = (pdfPageHeight - newHeight) / 2; // check if x and y pos >=0 if (xPos < 0) xPos = 0; if (yPos < 0) yPos = 0; } } pdfImage.setAbsolutePosition(xPos, yPos); } else { pdfImage.setAbsolutePosition(xPos, yPos); } cb.addImage(pdfImage); // inc counter ++t; if (t < totalPages) { img = document.get(t); // if dpi set, calculate new width/height if (horizontalDPI > 0 && verticalDPI > 0) { float xd = (float) horizontalDPI / 100; float yd = (float) verticalDPI / 100; newWidth = img.getWidth() / xd; newHeight = img.getHeight() / yd; } else { newWidth = img.getWidth(); newHeight = img.getHeight(); } // if auto orientation, set portrait or landscape if (pdfAutoOrientation) { if (newWidth >= newHeight) { pdf.setPageSize(PageSize.LETTER.rotate()); portrait = false; } else { pdf.setPageSize(PageSize.LETTER); portrait = true; } } else { // else, always portrait pdf.setPageSize(PageSize.LETTER); portrait = true; } // create new page. must happen after setting page orientation pdf.newPage(); writer.newPage(); // get new pages width/height pdfPageWidth = pdf.getPageSize().getWidth(); pdfPageHeight = pdf.getPageSize().getHeight(); // set width/height to something normal if (newWidth > pdfPageWidth) newWidth = pdfPageWidth; if (newHeight > pdfPageHeight) newHeight = pdfPageHeight; } } } pdf.close(); // add file name to list fileNames = new ArrayList<String>(); fileNames.add(fileName); } } catch (Exception e) { throw new Exception(e); } }
From source file:se.billes.pdf.renderer.process.NewPageRenderer.java
License:Open Source License
public void render(PdfWriter writer, Document document) throws PdfRenderException { writer.setPageEvent(page);//from www. jav a 2 s. c o m if (page.getBlocks() == null || page.getBlocks().length == 0) { writer.setPageEmpty(false); writer.newPage(); } else { document.newPage(); PdfContentByte cb = writer.getDirectContent(); for (BaseElement block : page.getBlocks()) { block.onRender(cb); } } }