Example usage for com.itextpdf.text.pdf PdfNumber PdfNumber

List of usage examples for com.itextpdf.text.pdf PdfNumber PdfNumber

Introduction

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

Prototype

public PdfNumber(float value) 

Source Link

Document

Constructs a new PdfNumber-object of type real.

Usage

From source file:Separator.java

License:Apache License

public static void crop(String inFileName, String outFileName, int split, boolean vert) throws Exception {

    PdfReader reader = new PdfReader(new File(inFileName).getAbsolutePath());
    String PDFName = outFileName.substring(outFileName.lastIndexOf("Folder\\") + 7,
            outFileName.indexOf(".pdf"));
    File fn = new File(scanFolder + PDFName + "\\" + PDFName + "_split_" + split + ".pdf");
    fn.getParentFile().mkdirs();// w  w w.  j  a  v  a  2 s  . c om

    int count = reader.getNumberOfPages();
    Document doc = new Document();
    PdfCopy copy = new PdfCopy(doc, new FileOutputStream(fn.getAbsolutePath()));
    doc.open();
    if (vert) {
        for (int i = 1; i <= count; i++) {
            reader.getPageN(i).put(PdfName.CROPBOX, new PdfRectangle(PageSize.LETTER));
            copy.addPage(copy.getImportedPage(reader, i));
        }
    } else {
        if (!doubSided) {
            for (int j = 1; j <= count; j++) {
                reader.getPageN(j).put(PdfName.CROPBOX, new PdfRectangle((new Rectangle(0, 180, 792, 792))));
                PdfDictionary pageDict;
                int rot = reader.getPageRotation(j);
                pageDict = reader.getPageN(j);
                pageDict.put(PdfName.ROTATE, new PdfNumber(rot + 90));
                copy.addPage(copy.getImportedPage(reader, j));
            }
        } else {
            for (int j = 1; j <= count; j++) {
                reader.getPageN(j).put(PdfName.CROPBOX, new PdfRectangle(new Rectangle(0, 180, 792, 792)));
                PdfDictionary pageDict;
                pageDict = reader.getPageN(j);
                if (j % 2 == 0) { // even
                    pageDict.put(PdfName.ROTATE, new PdfNumber(270));
                } else { // odd
                    pageDict.put(PdfName.ROTATE, new PdfNumber(90));
                }
                copy.addPage(copy.getImportedPage(reader, j));
            }
        }
    }
    doc.close();
}

From source file:at.laborg.briss.CropManager.java

License:Open Source License

private static void cropMultipliedFile(File source, CropJob cropJob)
        throws FileNotFoundException, DocumentException, IOException {

    PdfReader reader = new PdfReader(source.getAbsolutePath());
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(cropJob.getDestinationFile()));
    stamper.setMoreInfo(cropJob.getSourceMetaInfo());

    PdfDictionary pageDict;/*from   w  w w.j a va 2 s.  c om*/
    int newPageNumber = 1;
    for (int origPageNumber = 1; origPageNumber <= cropJob.getSourcePageCount(); origPageNumber++) {
        SingleCluster cluster = cropJob.getClusterCollection().getSingleCluster(origPageNumber);

        // if no crop was selected do nothing
        if (cluster.getRatiosList().size() == 0) {
            newPageNumber++;
            continue;
        }

        for (Float[] ratios : cluster.getRatiosList()) {

            pageDict = reader.getPageN(newPageNumber);

            List<Rectangle> boxes = new ArrayList<Rectangle>();
            boxes.add(reader.getBoxSize(newPageNumber, "media"));
            boxes.add(reader.getBoxSize(newPageNumber, "crop"));
            int rotation = reader.getPageRotation(newPageNumber);

            Rectangle scaledBox = calculateScaledRectangle(boxes, ratios, rotation);

            PdfArray scaleBoxArray = new PdfArray();
            scaleBoxArray.add(new PdfNumber(scaledBox.getLeft()));
            scaleBoxArray.add(new PdfNumber(scaledBox.getBottom()));
            scaleBoxArray.add(new PdfNumber(scaledBox.getRight()));
            scaleBoxArray.add(new PdfNumber(scaledBox.getTop()));

            pageDict.put(PdfName.CROPBOX, scaleBoxArray);
            pageDict.put(PdfName.MEDIABOX, scaleBoxArray);
            // increment the pagenumber
            newPageNumber++;
        }
        int[] range = new int[2];
        range[0] = newPageNumber - 1;
        range[1] = cropJob.getSourcePageCount() + (newPageNumber - origPageNumber);
        SimpleBookmark.shiftPageNumbers(cropJob.getSourceBookmarks(), cluster.getRatiosList().size() - 1,
                range);
    }
    stamper.setOutlines(cropJob.getSourceBookmarks());
    stamper.close();
    reader.close();
}

From source file:at.laborg.briss.utils.DocumentCropper.java

License:Open Source License

private static PdfArray createScaledBoxArray(final Rectangle scaledBox) {
    PdfArray scaleBoxArray = new PdfArray();
    scaleBoxArray.add(new PdfNumber(scaledBox.getLeft()));
    scaleBoxArray.add(new PdfNumber(scaledBox.getBottom()));
    scaleBoxArray.add(new PdfNumber(scaledBox.getRight()));
    scaleBoxArray.add(new PdfNumber(scaledBox.getTop()));
    return scaleBoxArray;
}

From source file:be.roots.taconic.pricingguide.util.iTextUtil.java

License:Open Source License

public static byte[] embedFont(byte[] pdf, String fontFileName, String fontName)
        throws IOException, DocumentException {

    try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
        // the font file
        RandomAccessFile raf = new RandomAccessFile(fontFileName, "r");
        byte fontfile[] = new byte[(int) raf.length()];
        raf.readFully(fontfile);/* www.j ava  2s . c  om*/
        raf.close();
        // create a new stream for the font file
        PdfStream stream = new PdfStream(fontfile);
        stream.flateCompress();
        stream.put(PdfName.LENGTH1, new PdfNumber(fontfile.length));
        // create a reader object
        PdfReader reader = new PdfReader(pdf);
        int n = reader.getXrefSize();
        PdfObject object;
        PdfDictionary font;
        PdfStamper stamper = new PdfStamper(reader, baos);
        PdfName fontname = new PdfName(fontName);
        for (int i = 0; i < n; i++) {
            object = reader.getPdfObject(i);
            if (object == null || !object.isDictionary())
                continue;
            font = (PdfDictionary) object;
            if (PdfName.FONTDESCRIPTOR.equals(font.get(PdfName.TYPE1))
                    && fontname.equals(font.get(PdfName.FONTNAME))) {
                PdfIndirectObject objref = stamper.getWriter().addToBody(stream);
                font.put(PdfName.FONTFILE2, objref.getIndirectReference());
            }
        }
        stamper.close();
        reader.close();
        return baos.toByteArray();
    }
}

From source file:com.ots.jsp1.itext.ADAStamper.java

License:Open Source License

public void addADAAsWatermark(InputStream inStream, OutputStream outputStream, String ADA)
        throws DocumentException, IOException {
    PdfStamper stamper = null;//  ww  w  . j a  va2s .c  o m
    PdfReader reader = null;
    try {

        reader = new PdfReader(inStream);
        //The zero byte means we dont want to change the version number of the PDF file.
        //true->not to change any of the original bytes
        stamper = new PdfStamper(reader, outputStream, '\0', true);
        int numberOfPages = reader.getNumberOfPages();

        for (int currentPage = 1; currentPage <= numberOfPages; currentPage++) {

            PdfAppearance canvas = PdfAppearance.createAppearance(stamper.getWriter(), 100, 30);
            canvas.setFontAndSize(
                    BaseFont.createFont(fontFilePath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED, true), 11);
            Rectangle pageSize = reader.getPageSizeWithRotation(currentPage);
            Rectangle watermarkPosition = new Rectangle(pageSize.getRight() - 150, pageSize.getTop() - 30,
                    pageSize.getRight() - 50, pageSize.getTop() - 10, 0);
            PdfAnnotation annotation = PdfAnnotation.createFreeText(stamper.getWriter(), watermarkPosition, ADA,
                    canvas);
            annotation.put(PdfName.F, new PdfNumber(PdfAnnotation.FLAGS_READONLY));

            //  annotation.put(PdfName.FONT, canvas);
            //  PdfAnnotation annotation = PdfAnnotation.createText(stamper.getWriter(), watermarkPosition, "", ADA, true, "Key");
            // 

            PdfBorderDictionary borderDictionary = new PdfBorderDictionary(0, PdfBorderDictionary.STYLE_SOLID);

            annotation.setBorderStyle(borderDictionary);
            stamper.addAnnotation(annotation, currentPage);
        }
    } finally {
        stamper.close();
        reader.close();
    }

}

From source file:mkl.testarea.itext5.pdfcleanup.PdfCleanUpContentOperator.java

License:Open Source License

/**
 * Renders parts of text which are visible.
 *//*from w  w  w .  j  av a2s .co m*/
private void writeTextChunks(Map<Integer, Float> structuredTJoperands, List<PdfCleanUpContentChunk> chunks,
        PdfContentByte canvas, float characterSpacing, float wordSpacing, float fontSize,
        float horizontalScaling) throws IOException {
    canvas.setCharacterSpacing(0);
    canvas.setWordSpacing(0);
    canvas.getInternalBuffer().append((byte) '[');

    float convertedCharacterSpacing = -characterSpacing * 1000f / fontSize;
    float convertedWordSpacing = -wordSpacing * 1000f / fontSize;

    float shift = structuredTJoperands != null ? structuredTJoperands.get(0) : 0;
    PdfCleanUpContentChunk.Text prevChunk = null;

    for (PdfCleanUpContentChunk chunk : chunks) {
        PdfCleanUpContentChunk.Text textChunk = (PdfCleanUpContentChunk.Text) chunk;

        if (prevChunk != null && prevChunk.getNumOfStrTextBelongsTo() != textChunk.getNumOfStrTextBelongsTo()
                && structuredTJoperands != null) {
            shift += structuredTJoperands.get(prevChunk.getNumOfStrTextBelongsTo());
        }

        if (textChunk.isVisible()) {
            if (Float.compare(shift, 0.0f) != 0 && Float.compare(shift, -0.0f) != 0) {
                canvas.getInternalBuffer().append(shift).append(' ');
            }

            textChunk.getText().toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
            canvas.getInternalBuffer().append(' ');

            shift = convertedCharacterSpacing + (isSpace(textChunk) ? convertedWordSpacing : 0);
        } else {
            shift += getUnscaledTextChunkWidth(textChunk, characterSpacing, wordSpacing, fontSize,
                    horizontalScaling);
        }

        prevChunk = textChunk;
    }

    if (Float.compare(shift, 0.0f) != 0 && Float.compare(shift, -0.0f) != 0) {
        canvas.getInternalBuffer().append(shift);
    }

    canvas.getInternalBuffer().append(TJ);

    if (Float.compare(characterSpacing, 0.0f) != 0 && Float.compare(characterSpacing, -0.0f) != 0) {
        new PdfNumber(characterSpacing).toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
        canvas.getInternalBuffer().append(Tc);
    }

    if (Float.compare(wordSpacing, 0.0f) != 0 && Float.compare(wordSpacing, -0.0f) != 0) {
        new PdfNumber(wordSpacing).toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
        canvas.getInternalBuffer().append(Tw);
    }
}

From source file:mkl.testarea.itext5.pdfcleanup.PdfCleanUpContentOperator.java

License:Open Source License

private void writeMoveTo(Point2D destinationPoint, PdfContentByte canvas) throws IOException {
    new PdfNumber(destinationPoint.getX()).toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
    canvas.getInternalBuffer().append(' ');
    new PdfNumber(destinationPoint.getY()).toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
    canvas.getInternalBuffer().append(m);
}

From source file:mkl.testarea.itext5.pdfcleanup.PdfCleanUpContentOperator.java

License:Open Source License

private void writeBezierCurve(BezierCurve curve, PdfContentByte canvas) throws IOException {
    List<Point2D> basePoints = curve.getBasePoints();
    Point2D p2 = basePoints.get(1);
    Point2D p3 = basePoints.get(2);
    Point2D p4 = basePoints.get(3);

    new PdfNumber(p2.getX()).toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
    canvas.getInternalBuffer().append(' ');

    new PdfNumber(p2.getY()).toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
    canvas.getInternalBuffer().append(' ');

    new PdfNumber(p3.getX()).toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
    canvas.getInternalBuffer().append(' ');

    new PdfNumber(p3.getY()).toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
    canvas.getInternalBuffer().append(' ');

    new PdfNumber(p4.getX()).toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
    canvas.getInternalBuffer().append(' ');

    new PdfNumber(p4.getY()).toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
    canvas.getInternalBuffer().append(c);
}

From source file:mkl.testarea.itext5.pdfcleanup.PdfCleanUpContentOperator.java

License:Open Source License

private void writeLine(Line line, PdfContentByte canvas) throws IOException {
    Point2D destination = line.getBasePoints().get(1);

    new PdfNumber(destination.getX()).toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
    canvas.getInternalBuffer().append(' ');

    new PdfNumber(destination.getY()).toPdf(canvas.getPdfWriter(), canvas.getInternalBuffer());
    canvas.getInternalBuffer().append(l);
}

From source file:mkl.testarea.itext5.pdfcleanup.StrictPdfCleanUpProcessor.java

License:Open Source License

Map<String, List> parseDAParam(PdfString DA) throws IOException {
    Map<String, List> commandArguments = new HashMap<String, List>();

    PRTokeniser tokeniser = new PRTokeniser(
            new RandomAccessFileOrArray(new RandomAccessSourceFactory().createSource(DA.getBytes())));
    List currentArguments = new ArrayList();

    while (tokeniser.nextToken()) {
        if (tokeniser.getTokenType() == PRTokeniser.TokenType.OTHER) {
            String key = tokeniser.getStringValue();

            if (key.equals("RG") || key.equals("G") || key.equals("K")) {
                key = STROKE_COLOR;//from w w w.j  a va2 s . c  o  m
            } else if (key.equals("rg") || key.equals("g") || key.equals("k")) {
                key = FILL_COLOR;
            }

            commandArguments.put(key, currentArguments);
            currentArguments = new ArrayList();
        } else {
            switch (tokeniser.getTokenType()) {
            case NUMBER:
                currentArguments.add(new PdfNumber(tokeniser.getStringValue()));
                break;

            case NAME:
                currentArguments.add(new PdfName(tokeniser.getStringValue()));
                break;

            default:
                currentArguments.add(tokeniser.getStringValue());
            }
        }
    }

    return commandArguments;
}