Search in sources :

Example 11 with PdfNumber

use of com.itextpdf.kernel.pdf.PdfNumber in project i7j-pdfsweep by itext.

the class PdfCleanUpProcessor method quadPointsForLinkAnnotationAreValid.

/**
 * For a link annotation, a quadpoints array can be specified
 * but it will be ignored in favour of the rectangle
 * if one of the points is located outside the rectangle's boundaries
 *
 * @param rect       rectangle entry of the link annotation
 * @param quadPoints An array of 8 × n numbers specifying the coordinates of n quadrilaterals
 *                   in default user space that comprise the region in which the link should be activated.
 * @return true if the quad points are valid, false if the quadpoint array should be used
 */
private boolean quadPointsForLinkAnnotationAreValid(Rectangle rect, PdfArray quadPoints) {
    if (quadPoints == null || quadPoints.isEmpty() || quadPoints.size() % 8 != 0) {
        return false;
    }
    for (int i = 0; i < quadPoints.size(); i += 8) {
        for (int j = 0; j < 8; j += 2) {
            PdfNumber pointX = quadPoints.getAsNumber(i + j);
            PdfNumber pointY = quadPoints.getAsNumber(i + j + 1);
            if (pointX == null || pointY == null) {
                return false;
            }
            float x = pointX.floatValue();
            float y = pointY.floatValue();
            if (rect != null && !rect.contains(new Rectangle(x, y, 0, 0))) {
                return false;
            }
        }
    }
    return true;
}
Also used : Rectangle(com.itextpdf.kernel.geom.Rectangle) PdfNumber(com.itextpdf.kernel.pdf.PdfNumber) Point(com.itextpdf.kernel.geom.Point)

Example 12 with PdfNumber

use of com.itextpdf.kernel.pdf.PdfNumber in project i7j-pdfsweep by itext.

the class TextPositioning method writeText.

private void writeText(String operator, List<PdfObject> operands, PdfArray cleanedText, PdfCanvas canvas) {
    CanvasGraphicsState canvasGs = canvas.getGraphicsState();
    boolean newLineShowText = "'".equals(operator) || "\"".equals(operator);
    if (newLineShowText) {
        if (canvasGs.getLeading() != currLeading) {
            canvas.setLeading(currLeading);
        }
        // after new line operator, removed text shift doesn't matter
        removedTextShift = null;
    }
    PdfTextArray tjShiftArray = null;
    if (removedTextShift != null) {
        float tjShift = (float) removedTextShift * 1000 / (canvasGs.getFontSize() * canvasGs.getHorizontalScaling() / 100);
        tjShiftArray = new PdfTextArray();
        tjShiftArray.add(new PdfNumber(tjShift));
    }
    if (cleanedText != null) {
        if (newLineShowText) {
            // char spacing and word spacing are set via writeNotAppliedTextStateParams() method
            canvas.newlineText();
        }
        if (removedTextShift != null) {
            tjShiftArray.addAll(cleanedText);
            cleanedText = tjShiftArray;
        }
        canvas.showText(cleanedText);
    } else {
        if (removedTextShift != null) {
            canvas.showText(tjShiftArray);
        }
        PdfCleanUpProcessor.writeOperands(canvas, operands);
    }
}
Also used : CanvasGraphicsState(com.itextpdf.kernel.pdf.canvas.CanvasGraphicsState) PdfTextArray(com.itextpdf.kernel.pdf.PdfTextArray) PdfNumber(com.itextpdf.kernel.pdf.PdfNumber)

Aggregations

PdfNumber (com.itextpdf.kernel.pdf.PdfNumber)12 ExtendedITextTest (com.itextpdf.test.ExtendedITextTest)7 Test (org.junit.Test)7 PdfArray (com.itextpdf.kernel.pdf.PdfArray)6 PdfStream (com.itextpdf.kernel.pdf.PdfStream)6 UnitTest (com.itextpdf.test.annotations.type.UnitTest)6 Point (com.itextpdf.kernel.geom.Point)2 Rectangle (com.itextpdf.kernel.geom.Rectangle)2 PdfBoolean (com.itextpdf.kernel.pdf.PdfBoolean)2 PdfImageXObject (com.itextpdf.kernel.pdf.xobject.PdfImageXObject)2 PdfTokenizer (com.itextpdf.io.source.PdfTokenizer)1 RandomAccessFileOrArray (com.itextpdf.io.source.RandomAccessFileOrArray)1 RandomAccessSourceFactory (com.itextpdf.io.source.RandomAccessSourceFactory)1 PdfName (com.itextpdf.kernel.pdf.PdfName)1 PdfNull (com.itextpdf.kernel.pdf.PdfNull)1 PdfString (com.itextpdf.kernel.pdf.PdfString)1 PdfTextArray (com.itextpdf.kernel.pdf.PdfTextArray)1 CanvasGraphicsState (com.itextpdf.kernel.pdf.canvas.CanvasGraphicsState)1 LogMessages (com.itextpdf.test.annotations.LogMessages)1 IntegrationTest (com.itextpdf.test.annotations.type.IntegrationTest)1