Example usage for com.itextpdf.text.pdf PdfReader getPageSize

List of usage examples for com.itextpdf.text.pdf PdfReader getPageSize

Introduction

In this page you can find the example usage for com.itextpdf.text.pdf PdfReader getPageSize.

Prototype

public Rectangle getPageSize(final PdfDictionary page) 

Source Link

Document

Gets the page from a page dictionary

Usage

From source file:com.whty.transform.common.utils.TransformUtils.java

public static boolean pdfTopdf(String docpath) {
    File pdfPath = new File(SysConf.getString("path.output") + docpath + "/pdf/");
    if (!pdfPath.exists()) {
        pdfPath.mkdirs();//w  w w  .  ja  v a2 s .c o  m
    }
    // pdf?
    try {
        PdfReader reader = new PdfReader(SysConf.getString("path.input") + docpath);
        com.itextpdf.text.Document document = new com.itextpdf.text.Document(reader.getPageSize(1));
        PdfCopy copy = new PdfCopy(document,
                new FileOutputStream(pdfPath.getAbsoluteFile() + "/" + transFileName + ".pdf"));
        document.open();
        for (int i = 1; i <= reader.getNumberOfPages(); i++) {
            document.newPage();
            PdfImportedPage page = copy.getImportedPage(reader, i);
            copy.addPage(page);
        }
        document.close();
        return true;
    } catch (IOException e) {
        LOGGER.error(e.getMessage(), e);
    } catch (DocumentException e) {
        LOGGER.error(e.getMessage(), e);
    }
    return false;
}

From source file:de.drippinger.cytricHelper.CytricHelper.java

License:Open Source License

public void manipulatePdf(String sourceFile, String expenseID) throws IOException, DocumentException {
    PdfReader reader = new PdfReader(sourceFile);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(getOutputName(sourceFile)));

    PdfContentByte over = stamper.getOverContent(1);
    Phrase p = new Phrase(String.format("Cytric ID: %s", expenseID));
    ColumnText.showTextAligned(over, Element.ALIGN_CENTER, p, 500, reader.getPageSize(1).getHeight() - 30, 0);
    over.saveState();// w ww  .  jav  a 2s  . c  om

    stamper.close();
    reader.close();
}

From source file:de.gbv.marginalia.Marginalia.java

License:Open Source License

/**
 * Inspect a PDF file and write the info to a writer
 * @param writer Writer to a text file/* ww  w. jav a2 s. c om*/
 * @param filename Path to the PDF file
 * @throws IOException
 */
public static void inspect(PrintWriter writer, String filename) throws IOException, SAXException {
    //        writer.println(filename);
    writer.flush();

    PdfReader reader = new PdfReader(filename);

    ContentHandler xmlhandler = new SimpleXMLWriter(writer);
    xmlhandler.startDocument();

    SimpleXMLCreator xml = new SimpleXMLCreator(xmlhandler, Annotation.namespaces, true);

    /*
            writer.println("Number of pages: "+reader.getNumberOfPages());
            Rectangle mediabox = reader.getPageSize(1);
            writer.print("Size of page 1: [");
            writer.print(mediabox.getLeft());
            writer.print(',');
            writer.print(mediabox.getBottom());
            writer.print(',');
            writer.print(mediabox.getRight());
            writer.print(',');
            writer.print(mediabox.getTop());
            writer.println("]");
            writer.print("Rotation of page 1: ");
            writer.println(reader.getPageRotation(1));
            writer.print("Page size with rotation of page 1: ");
            writer.println(reader.getPageSizeWithRotation(1));
            writer.println();
            writer.flush();
    */
    List<Annotation> annots = new LinkedList<Annotation>();
    xml.startElement("annots");

    // TODO: The following elements may be added:
    // - optionally write <f href="Document.pdf"/>
    // - optionally write <ids original="ID" modified="ID" />

    xml.startElement("m", "pages");
    for (int pageNum = 1; pageNum <= reader.getNumberOfPages(); pageNum++) {
        PdfDictionary pageDic = reader.getPageN(pageNum);

        Map<String, String> attr = new HashMap<String, String>();
        attr.put("number", "" + pageNum);
        attr.put("rotate", "" + reader.getPageRotation(pageNum));

        Rectangle mediabox = reader.getPageSize(pageNum);
        attr.put("left", "" + mediabox.getLeft());
        attr.put("bottom", "" + mediabox.getBottom());
        attr.put("right", "" + mediabox.getRight());
        attr.put("top", "" + mediabox.getTop());

        xml.contentElement("m", "page", "", attr);

        PdfArray rawannots = pageDic.getAsArray(PdfName.ANNOTS);
        if (rawannots == null || rawannots.isEmpty()) {
            // writer.println("page "+pageNum+" contains no annotations");
            continue;
        }

        // writer.println("page "+pageNum+" has "+rawannots.size()+" annotations");

        for (int i = 0; i < rawannots.size(); i++) {
            PdfObject obj = rawannots.getDirectObject(i);
            if (!obj.isDictionary())
                continue;
            Annotation a = new Annotation((PdfDictionary) obj, pageNum);
            annots.add(a);
        }

        /**
        // Now we have all highlight and similar annotations, we need
        // to find out what words are actually highlighted! PDF in fact
        // is a dump format to express documents.
        // For some hints see
        // http://stackoverflow.com/questions/4028240/extract-each-column-of-a-pdf-file
                
        // We could reuse code from LocationTextExtractionStrategy (TODO)
        // LocationTextExtractionStrategy extr = new LocationTextExtractionStrategy();
        String fulltext = PdfTextExtractor.getTextFromPage(reader,pageNum);//,extr
        writer.println(fulltext);
        */
    }
    xml.endElement();

    for (Annotation a : annots) {
        a.serializeXML(xmlhandler);
    }
    // TODO: add page information (page size and orientation)

    xml.endAll();
}

From source file:de.jost_net.JVerein.io.FormularAufbereitung.java

License:Open Source License

public void writeForm(Formular formular, Map<String, Object> map) throws RemoteException {
    try {//ww  w. j  a  v a 2  s.  co  m
        PdfReader reader = new PdfReader(formular.getInhalt());
        int numOfPages = reader.getNumberOfPages();
        for (int i = 1; i <= numOfPages; i++) {
            doc.setPageSize(reader.getPageSize(i));
            doc.newPage();
            PdfImportedPage page = writer.getImportedPage(reader, i);
            PdfContentByte contentByte = writer.getDirectContent();
            contentByte.addTemplate(page, 0, 0);

            DBIterator<Formularfeld> it = Einstellungen.getDBService().createList(Formularfeld.class);
            it.addFilter("formular = ? and seite = ?", new Object[] { formular.getID(), i });
            while (it.hasNext()) {
                Formularfeld f = (Formularfeld) it.next();
                goFormularfeld(contentByte, f, map.get(f.getName()));
            }
        }
    } catch (IOException e) {
        throw new RemoteException("Fehler", e);
    } catch (DocumentException e) {
        throw new RemoteException("Fehler", e);
    }
}

From source file:de.mat.utils.pdftools.PdfAddPageNum.java

License:Mozilla Public License

/**
 * <h4>FeatureDomain:</h4>/*from   www.  j  a v  a 2 s  .c o m*/
 *     PublishingTools
 * <h4>FeatureDescription:</h4>
 *     adds pagenum with stamper to pages from reader 
 * <h4>FeatureResult:</h4>
 *   <ul>
 *     <li>updates stamper - updates the stamper
 *   </ul> 
 * <h4>FeatureKeywords:</h4>
 *     PDF Publishing
 * @param reader - reader with the pages
 * @param stamper - stamper to add the canvas
 * @param pageOffset - add to pagenumber
 * @throws DocumentException
 * @throws IOException
 */
public void addPageNumber(PdfReader reader, PdfStamper stamper, int pageOffset)
        throws DocumentException, IOException {
    // ierate all pages from reader
    for (int zaehler = 1; zaehler <= reader.getNumberOfPages(); zaehler++) {
        // read pagesize
        Rectangle pageSize = reader.getPageSize(zaehler);
        float xpos = pageSize.getLeft() + pageSize.getWidth() / 2;
        float ypos = 20;
        float fontSize = 7;

        // Default-Positions for --page-width 150mm --page-height 212mm == 601px
        if (pageSize.getHeight() > 602 || pageSize.getHeight() < 598) {
            // correct it relative
            float factor = pageSize.getHeight() / 601;
            if (LOGGER.isDebugEnabled())
                LOGGER.debug(" PageHeight:" + pageSize.getHeight() + " Factor:" + factor);
            ypos = ypos * factor;
            fontSize = fontSize * factor;
        }

        // add pagenumber-canvas
        PdfContentByte canvas = stamper.getOverContent(zaehler);
        BaseFont bf_helv = BaseFont.createFont(BaseFont.HELVETICA, "Cp1252", false);
        canvas.setFontAndSize(bf_helv, fontSize);
        canvas.beginText();
        canvas.showTextAligned(PdfContentByte.ALIGN_CENTER, "" + new Integer(zaehler + pageOffset - 1), xpos,
                ypos, 0);
        canvas.endText();
    }
}

From source file:de.mat.utils.pdftools.PdfResize.java

License:Mozilla Public License

/**
/**/*w ww .  j  a  v  a2s  .co m*/
 * <h4>FeatureDomain:</h4>
 *     PublishingTools
 * <h4>FeatureDescription:</h4>
 *     scales and move comntents of the pdf pages from fileSrc and output to
 *     fileNew
 * <h4>FeatureResult:</h4>
 *   <ul>
 *     <li>create PDF - fileNew
 *   </ul> 
 * <h4>FeatureKeywords:</h4>
 *     PDF Publishing
 * @param fileSrc - source-pdf
 * @param fileNew - scaled dest-pdf
 * @param factorX - scaling x
 * @param factorY - scaling y
 * @param pixelLeft - move right
 * @param pixelTop - move down
 * @throws Exception
 */
public static void resizePdf(String fileSrc, String fileNew, float factorX, float factorY, float pixelLeft,
        float pixelTop) throws Exception {

    // open reader
    PdfReader reader = new PdfReader(fileSrc);

    // get pagebasedata
    int pageCount = reader.getNumberOfPages();
    Rectangle psize = reader.getPageSize(1);
    float width = psize.getHeight();
    float height = psize.getWidth();

    // open writer
    Document documentNew = new Document(new Rectangle(height * factorY, width * factorX));
    PdfWriter writerNew = PdfWriter.getInstance(documentNew, new FileOutputStream(fileNew));
    documentNew.open();
    PdfContentByte cb = writerNew.getDirectContent();

    // iterate pages
    int i = 0;
    while (i < pageCount) {
        i++;
        // imoport page from reader and scale it to writer
        documentNew.newPage();
        PdfImportedPage page = writerNew.getImportedPage(reader, i);
        cb.addTemplate(page, factorX, 0, 0, factorY, pixelLeft, pixelTop);

        if (LOGGER.isInfoEnabled())
            LOGGER.info("AddPage " + i + " from:" + fileSrc + " to:" + fileNew);
    }

    documentNew.close();
    writerNew.close();
}

From source file:ec.rubrica.pdf.FirmadorPdf.java

License:Open Source License

public byte[] firmar(PrivateKey pk, X509Certificate certificado, String razon, String ubicacion)
        throws IOException {
    try {//from   w w  w  .  ja  v  a2  s .co  m
        // Creating the reader and the stamper
        PdfReader reader = new PdfReader(pdf);

        ByteArrayOutputStream signedPdf = new ByteArrayOutputStream();
        PdfStamper stamper = PdfStamper.createSignature(reader, signedPdf, '\0');

        // Creating the appearance
        PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
        appearance.setReason(razon);
        appearance.setLocation(ubicacion);

        Rectangle pageSize = reader.getPageSize(1);
        Rectangle position = new Rectangle(15, pageSize.getHeight() - 50, 250, pageSize.getHeight());
        appearance.setVisibleSignature(position, 1, "sig");

        // Creating the signature
        ExternalSignature pks = new PrivateKeySignature(pk, DigestAlgorithms.SHA1, null);

        Certificate[] chain = new Certificate[] { certificado };

        MakeSignature.signDetached(appearance, pks, chain, null, null, tsaClient,
                BouncyCastleProvider.PROVIDER_NAME, 0, MakeSignature.CMS);

        return signedPdf.toByteArray();
    } catch (DocumentException e) {
        throw new RuntimeException(e);
    } catch (GeneralSecurityException e) {
        throw new RuntimeException(e);
    }
}

From source file:EplanPrinter.PDFPrint.java

License:Open Source License

private MediaBox[] getDocumentMediaBox(PdfReader reader, int pages) {
    MediaBox mbox[] = new MediaBox[pages];
    Rectangle rect;//from w w  w  .  ja  va2 s  .c  o m

    for (int x = 0; x < totalPages; x++) {
        mbox[x] = new MediaBox();
        rect = reader.getPageSize(x + 1);
        mbox[x].top = rect.getTop();
        mbox[x].bottom = rect.getBottom();
        mbox[x].left = rect.getLeft();
        mbox[x].right = rect.getRight();
    }
    return mbox;
}

From source file:gov.nih.nci.firebird.service.pdf.AdditionalContent.java

License:Open Source License

private void addText(PdfReader reader, PdfStamper stamper, ColumnText text) throws DocumentException {
    Rectangle pageSize = reader.getPageSize(1);
    int newPageNumber = reader.getNumberOfPages() + 1;
    do {/*from   w  ww  . j av a  2 s.  c om*/
        stamper.insertPage(newPageNumber, pageSize);
        PdfContentByte newContent = stamper.getOverContent(newPageNumber);
        text.setCanvas(newContent);
        text.setSimpleColumn(pageSize.getLeft(MARGIN_SIZE), pageSize.getTop(MARGIN_SIZE),
                pageSize.getRight(MARGIN_SIZE), pageSize.getBottom(MARGIN_SIZE));
        newPageNumber++;
    } while (ColumnText.hasMoreText(text.go()));
}

From source file:gravabncertificado007.CarimboCertificado.java

public void aplicaCarimboBin(String BN, String caminhoarquivo)
        throws DocumentException, IOException, RuntimeException {

    PdfReader.unethicalreading = true;//  w w w.  j a va2 s  .  c o m
    //Cria o reader para o primeiro PDF

    PdfReader reader = new PdfReader(caminhoarquivo);
    Rectangle psize = reader.getPageSize(1);
    float width = psize.getWidth();
    float height = psize.getHeight();

    Document document = new Document(new Rectangle(width, height));

    PdfWriter writer = PdfWriter.getInstance(document,
            new FileOutputStream(caminhoarquivo.substring(0, caminhoarquivo.length() - 4) + "-C.pdf"));

    document.open();

    int i = 0;
    BN = BN.substring(BN.length() - 13, BN.length() - 4);
    PdfContentByte cb = writer.getDirectContent();
    while (i < reader.getNumberOfPages()) {
        i++;

        document.newPage();

        PdfContentByte under = writer.getDirectContentUnder();
        PdfImportedPage page1 = writer.getImportedPage(reader, i);
        cb.addTemplate(page1, 0, i * 0.2f);

        //CARIMBO DA BN
        BaseFont bf = BaseFont.createFont(BaseFont.COURIER_BOLD, BaseFont.CP1250, BaseFont.NOT_EMBEDDED);
        cb.beginText();
        cb.setFontAndSize(bf, 14);
        cb.showTextAligned(PdfContentByte.ALIGN_CENTER, " ________________", width / 6, 44, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_CENTER, " |               |", width / 6, 32, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_CENTER, " |               |", width / 6, 22, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_CENTER, " NR", width / 6, 28, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_CENTER, " " + BN, width / 6, 16, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_CENTER, " |               |", width / 6, 12, 0);
        cb.showTextAligned(PdfContentByte.ALIGN_CENTER, " ________________", width / 6, 14, 0);
        cb.endText();

    }

    document.close();
    writer.close();
    reader.close();

}