Example usage for com.itextpdf.text.pdf PdfWriter newPage

List of usage examples for com.itextpdf.text.pdf PdfWriter newPage

Introduction

In this page you can find the example usage for com.itextpdf.text.pdf PdfWriter newPage.

Prototype


public boolean newPage() 

Source Link

Document

Signals that an new page has to be started.

Usage

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);
        }
    }
}