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