List of usage examples for org.apache.pdfbox.pdmodel.common PDRectangle setLowerLeftX
public void setLowerLeftX(float value)
From source file:airviewer.BoxAnnotationMaker.java
License:Apache License
/** * * @param document//from ww w. j a va 2 s . c om * @param arguments(lowerLeftX, lowerLeftY, width, height) * @return */ public static List<PDAnnotation> make(PDDocument document, ArrayList<String> arguments) { assert null != arguments && arguments.size() == 5; assert null != document; List<PDAnnotation> result; try { int pageNumber = parseInt(arguments.get(0)); float lowerLeftX = parseFloat(arguments.get(1)); float lowerLeftY = parseFloat(arguments.get(2)); float width = parseFloat(arguments.get(3)); float height = parseFloat(arguments.get(4)); String contents = ""; PDFont font = PDType1Font.HELVETICA_OBLIQUE; float fontSize = 16; // Or whatever font size you want. //float textWidth = font.getStringWidth(contents) * fontSize / 1000.0f; //float textHeight = 32; try { PDPage page = document.getPage(pageNumber); PDColor red = new PDColor(new float[] { 1, 0, 0 }, PDDeviceRGB.INSTANCE); PDBorderStyleDictionary borderThick = new PDBorderStyleDictionary(); borderThick.setWidth(72 / 12); // 12th inch PDRectangle position = new PDRectangle(); position.setLowerLeftX(lowerLeftX); position.setLowerLeftY(lowerLeftY); position.setUpperRightX(lowerLeftX + width); position.setUpperRightY(lowerLeftY + height); PDAnnotationSquareCircle aSquare = new PDAnnotationSquareCircle( PDAnnotationSquareCircle.SUB_TYPE_SQUARE); aSquare.setAnnotationName(new UID().toString()); aSquare.setContents(contents); aSquare.setColor(red); // Outline in red, not setting a fill PDColor fillColor = new PDColor(new float[] { .8f, .8f, .8f }, PDDeviceRGB.INSTANCE); aSquare.setInteriorColor(fillColor); aSquare.setBorderStyle(borderThick); aSquare.setRectangle(position); result = new ArrayList<>(page.getAnnotations()); // copy page.getAnnotations().add(aSquare); // The following lines are needed for PDFRenderer to render // annotations. Preview and Acrobat don't seem to need these. if (null == aSquare.getAppearance()) { aSquare.setAppearance(new PDAppearanceDictionary()); PDAppearanceStream annotationAppearanceStream = new PDAppearanceStream(document); position.setLowerLeftX(lowerLeftX - borderThick.getWidth() * 0.5f); position.setLowerLeftY(lowerLeftY - borderThick.getWidth() * 0.5f); position.setUpperRightX(lowerLeftX + width + borderThick.getWidth() * 0.5f); position.setUpperRightY(lowerLeftY + height + borderThick.getWidth() * 0.5f); annotationAppearanceStream.setBBox(position); annotationAppearanceStream.setMatrix(new AffineTransform()); annotationAppearanceStream.setResources(page.getResources()); try (PDPageContentStream appearanceContent = new PDPageContentStream(document, annotationAppearanceStream)) { Matrix transform = new Matrix(); appearanceContent.transform(transform); appearanceContent.addRect(lowerLeftX, lowerLeftY, width, height); appearanceContent.setLineWidth(borderThick.getWidth()); appearanceContent.setNonStrokingColor(fillColor); appearanceContent.setStrokingColor(red); appearanceContent.fillAndStroke(); appearanceContent.beginText(); // Center text vertically, left justified appearanceContent.newLineAtOffset(lowerLeftX, lowerLeftY + height * 0.5f - fontSize * 0.5f); appearanceContent.setFont(font, fontSize); appearanceContent.setNonStrokingColor(red); appearanceContent.showText(contents); appearanceContent.endText(); } aSquare.getAppearance().setNormalAppearance(annotationAppearanceStream); } //System.out.println(page.getAnnotations().toString()); } catch (IOException ex) { Logger.getLogger(DocumentCommandWrapper.class.getName()).log(Level.SEVERE, null, ex); result = null; } } catch (NumberFormatException | NullPointerException ex) { System.err.println("\tNon number encountered where floating point number expected."); result = null; } return result; }
From source file:airviewer.EllipseAnnotationMaker.java
License:Apache License
/** * //from w w w. j a va2 s . com * @param document * @param arguments(pageNumber, lowerLeftX, lowerLeftY, width, height, contents) * @return */ public static List<PDAnnotation> make(PDDocument document, ArrayList<String> arguments) { assert null != arguments && arguments.size() == 6; assert null != document; List<PDAnnotation> result; try { int pageNumber = parseInt(arguments.get(0)); float lowerLeftX = parseFloat(arguments.get(1)); float lowerLeftY = parseFloat(arguments.get(2)); float width = parseFloat(arguments.get(3)); float height = parseFloat(arguments.get(4)); String contents = arguments.get(5); PDFont font = PDType1Font.HELVETICA_OBLIQUE; final float fontSize = 16.0f; // Or whatever font size you want. //final float lineSpacing = 4.0f; width = max(width, font.getStringWidth(contents) * fontSize / 1000.0f); //final float textHeight = fontSize + lineSpacing; try { PDPage page = document.getPage(pageNumber); PDColor red = new PDColor(new float[] { 1, 0, 0 }, PDDeviceRGB.INSTANCE); PDColor black = new PDColor(new float[] { 0, 0, 0 }, PDDeviceRGB.INSTANCE); PDBorderStyleDictionary borderThick = new PDBorderStyleDictionary(); borderThick.setWidth(72 / 12); // 12th inch PDRectangle position = new PDRectangle(); position.setLowerLeftX(lowerLeftX); position.setLowerLeftY(lowerLeftY); position.setUpperRightX(lowerLeftX + width); position.setUpperRightY(lowerLeftY + height); PDAnnotationSquareCircle aCircle = new PDAnnotationSquareCircle( PDAnnotationSquareCircle.SUB_TYPE_CIRCLE); aCircle.setAnnotationName(new UID().toString()); aCircle.setContents(contents); PDColor fillColor = new PDColor(new float[] { .8f, .8f, .8f }, PDDeviceRGB.INSTANCE); aCircle.setInteriorColor(fillColor); aCircle.setColor(red); aCircle.setBorderStyle(borderThick); aCircle.setRectangle(position); result = new ArrayList<>(page.getAnnotations()); // Copy page.getAnnotations().add(aCircle); // The following lines are needed for PDFRenderer to render // annotations. Preview and Acrobat don't seem to need these. if (null == aCircle.getAppearance()) { aCircle.setAppearance(new PDAppearanceDictionary()); PDAppearanceStream annotationAppearanceStream = new PDAppearanceStream(document); position.setLowerLeftX(lowerLeftX - borderThick.getWidth() * 0.5f); position.setLowerLeftY(lowerLeftY - borderThick.getWidth() * 0.5f); position.setUpperRightX(lowerLeftX + width + borderThick.getWidth() * 0.5f); position.setUpperRightY(lowerLeftY + height + borderThick.getWidth() * 0.5f); annotationAppearanceStream.setBBox(position); annotationAppearanceStream.setMatrix(new AffineTransform()); annotationAppearanceStream.setResources(page.getResources()); try (PDPageContentStream appearanceContent = new PDPageContentStream(document, annotationAppearanceStream)) { Matrix transform = new Matrix(); appearanceContent.transform(transform); appearanceContent.moveTo(lowerLeftX, lowerLeftY + height * 0.5f); appearanceContent.curveTo(lowerLeftX, lowerLeftY + height * 0.75f, lowerLeftX + width * 0.25f, lowerLeftY + height, lowerLeftX + width * 0.5f, lowerLeftY + height); appearanceContent.curveTo(lowerLeftX + width * 0.75f, lowerLeftY + height, lowerLeftX + width, lowerLeftY + height * 0.75f, lowerLeftX + width, lowerLeftY + height * 0.5f); appearanceContent.curveTo(lowerLeftX + width, lowerLeftY + height * 0.25f, lowerLeftX + width * 0.75f, lowerLeftY, lowerLeftX + width * 0.5f, lowerLeftY); appearanceContent.curveTo(lowerLeftX + width * 0.25f, lowerLeftY, lowerLeftX, lowerLeftY + height * 0.25f, lowerLeftX, lowerLeftY + height * 0.5f); appearanceContent.setLineWidth(borderThick.getWidth()); appearanceContent.setNonStrokingColor(fillColor); appearanceContent.setStrokingColor(red); appearanceContent.fillAndStroke(); appearanceContent.moveTo(0, 0); appearanceContent.beginText(); appearanceContent.setNonStrokingColor(black); // Center text vertically, left justified appearanceContent.newLineAtOffset(lowerLeftX + borderThick.getWidth(), lowerLeftY + height * 0.5f - fontSize * 0.5f); appearanceContent.setFont(font, fontSize); appearanceContent.showText(contents); appearanceContent.endText(); } aCircle.getAppearance().setNormalAppearance(annotationAppearanceStream); } } catch (IOException ex) { Logger.getLogger(DocumentCommandWrapper.class.getName()).log(Level.SEVERE, null, ex); result = null; } } catch (NumberFormatException | NullPointerException ex) { System.err.println("Non number encountered where floating point number expected."); result = null; } catch (IOException ex) { Logger.getLogger(EllipseAnnotationMaker.class.getName()).log(Level.SEVERE, null, ex); result = null; } return result; }
From source file:airviewer.TextAnnotationMaker.java
License:Apache License
/** * //from w w w . ja v a 2 s . co m * @param document * @param arguments(pageNumber, lowerLeftX, lowerLeftY); String contents * @return */ public static List<PDAnnotation> make(PDDocument document, ArrayList<String> arguments) { assert null != arguments && arguments.size() == 4; assert null != document; List<PDAnnotation> result; try { int pageNumber = parseInt(arguments.get(0)); float lowerLeftX = parseFloat(arguments.get(1)); float lowerLeftY = parseFloat(arguments.get(2)); String contents = arguments.get(3); PDFont font = PDType1Font.HELVETICA_OBLIQUE; final float fontSize = 16.0f; // Or whatever font size you want. final float lineSpacing = 4.0f; float width = font.getStringWidth(contents) * fontSize / 1000.0f; // font.getStringWidth(contents) returns thousanths of PS point final float textHeight = fontSize + lineSpacing; try { PDPage page = document.getPage(pageNumber); PDColor red = new PDColor(new float[] { 1, 0, 0 }, PDDeviceRGB.INSTANCE); PDBorderStyleDictionary borderThick = new PDBorderStyleDictionary(); borderThick.setWidth(72 / 12); // 12th inch PDRectangle position = new PDRectangle(); position.setLowerLeftX(lowerLeftX); position.setLowerLeftY(lowerLeftY); position.setUpperRightX(lowerLeftX + width); position.setUpperRightY(lowerLeftY + textHeight); PDAnnotationSquareCircle aSquare = new PDAnnotationSquareCircle( PDAnnotationSquareCircle.SUB_TYPE_SQUARE); aSquare.setAnnotationName(new UID().toString()); aSquare.setContents(contents); PDColor fillColor = new PDColor(new float[] { .8f, .8f, .8f }, PDDeviceRGB.INSTANCE); aSquare.setInteriorColor(fillColor); aSquare.setRectangle(position); result = new ArrayList<>(page.getAnnotations()); // copy page.getAnnotations().add(aSquare); // The following lines are needed for PDFRenderer to render // annotations. Preview and Acrobat don't seem to need these. if (null == aSquare.getAppearance()) { aSquare.setAppearance(new PDAppearanceDictionary()); PDAppearanceStream annotationAppearanceStream = new PDAppearanceStream(document); position.setLowerLeftX(lowerLeftX - borderThick.getWidth() * 0.5f); position.setLowerLeftY(lowerLeftY - borderThick.getWidth() * 0.5f); position.setUpperRightX(lowerLeftX + width + borderThick.getWidth() * 0.5f); position.setUpperRightY(lowerLeftY + textHeight + borderThick.getWidth() * 0.5f); annotationAppearanceStream.setBBox(position); annotationAppearanceStream.setMatrix(new AffineTransform()); annotationAppearanceStream.setResources(page.getResources()); try (PDPageContentStream appearanceContent = new PDPageContentStream(document, annotationAppearanceStream)) { Matrix transform = new Matrix(); appearanceContent.transform(transform); appearanceContent.addRect(lowerLeftX, lowerLeftY, width, textHeight); appearanceContent.setNonStrokingColor(fillColor); appearanceContent.fill(); appearanceContent.beginText(); // Center text vertically, left justified appearanceContent.newLineAtOffset(lowerLeftX, lowerLeftY + textHeight * 0.5f - fontSize * 0.5f); appearanceContent.setFont(font, fontSize); appearanceContent.setNonStrokingColor(red); appearanceContent.showText(contents); appearanceContent.endText(); } aSquare.getAppearance().setNormalAppearance(annotationAppearanceStream); } //System.out.println(page.getAnnotations().toString()); } catch (IOException ex) { Logger.getLogger(DocumentCommandWrapper.class.getName()).log(Level.SEVERE, null, ex); result = null; } } catch (NumberFormatException | NullPointerException ex) { System.err.println("Non number encountered where floating point number expected."); result = null; } catch (IOException ex) { Logger.getLogger(TextAnnotationMaker.class.getName()).log(Level.SEVERE, null, ex); result = null; } return result; }
From source file:at.gv.egiz.pdfas.lib.impl.pdfbox.positioning.Positioning.java
License:EUPL
private static PDRectangle rotateBox(PDRectangle cropBox, int rotation) { if (rotation != 0) { Point2D upSrc = new Point2D.Float(); upSrc.setLocation(cropBox.getUpperRightX(), cropBox.getUpperRightY()); Point2D llSrc = new Point2D.Float(); llSrc.setLocation(cropBox.getLowerLeftX(), cropBox.getLowerLeftY()); AffineTransform transform = new AffineTransform(); transform.setToIdentity();/*from ww w. j ava 2 s . co m*/ if (rotation % 360 != 0) { transform.setToRotation(Math.toRadians(rotation * -1), llSrc.getX(), llSrc.getY()); } Point2D upDst = new Point2D.Float(); transform.transform(upSrc, upDst); Point2D llDst = new Point2D.Float(); transform.transform(llSrc, llDst); float y1 = (float) upDst.getY(); float y2 = (float) llDst.getY(); if (y1 > y2) { float t = y1; y1 = y2; y2 = t; } if (y1 < 0) { y2 = y2 + -1 * y1; y1 = 0; } float x1 = (float) upDst.getX(); float x2 = (float) llDst.getX(); if (x1 > x2) { float t = x1; x1 = x2; x2 = t; } if (x1 < 0) { x2 = x2 + -1 * x1; x1 = 0; } cropBox.setUpperRightX(x2); cropBox.setUpperRightY(y2); cropBox.setLowerLeftY(y1); cropBox.setLowerLeftX(x1); } return cropBox; }
From source file:at.gv.egiz.pdfas.lib.impl.stamping.pdfbox.PDFAsVisualSignatureBuilder.java
License:EUPL
public void createSignatureRectangle(PDSignatureField signatureField, PDFAsVisualSignatureDesigner properties, float degrees) throws IOException { PDRectangle rect = new PDRectangle(); Point2D upSrc = new Point2D.Float(); upSrc.setLocation(properties.getxAxis() + properties.getWidth(), properties.getPageHeight() - properties.getyAxis()); Point2D llSrc = new Point2D.Float(); llSrc.setLocation(properties.getxAxis(), properties.getPageHeight() - properties.getyAxis() - properties.getHeight()); rect.setUpperRightX((float) upSrc.getX()); rect.setUpperRightY((float) upSrc.getY()); rect.setLowerLeftY((float) llSrc.getY()); rect.setLowerLeftX((float) llSrc.getX()); logger.debug("orig rectangle of signature has been created: {}", rect.toString()); AffineTransform transform = new AffineTransform(); transform.setToIdentity();/*from w w w . java 2s . co m*/ if (degrees % 360 != 0) { transform.setToRotation(Math.toRadians(degrees), llSrc.getX(), llSrc.getY()); } Point2D upDst = new Point2D.Float(); transform.transform(upSrc, upDst); Point2D llDst = new Point2D.Float(); transform.transform(llSrc, llDst); float xPos = properties.getxAxis(); float yPos = properties.getPageHeight() - properties.getyAxis(); logger.debug("POS {} x {}", xPos, yPos); logger.debug("SIZE {} x {}", properties.getWidth(), properties.getHeight()); // translate according to page! rotation int pageRotation = properties.getPageRotation(); AffineTransform translate = new AffineTransform(); switch (pageRotation) { case 90: translate.setToTranslation( properties.getPageHeight() - (properties.getPageHeight() - properties.getyAxis()) - properties.getxAxis() + properties.getHeight(), properties.getxAxis() + properties.getHeight() - (properties.getPageHeight() - properties.getyAxis())); break; case 180: // translate.setToTranslation(properties.getPageWidth() - // properties.getxAxis() - properties.getxAxis(), // properties.getPageHeight() - properties.getyAxis() + // properties.getHeight()); translate.setToTranslation(properties.getPageWidth() - 2 * xPos, properties.getPageHeight() - 2 * (yPos - properties.getHeight())); break; case 270: translate.setToTranslation(-properties.getHeight() + yPos - xPos, properties.getPageWidth() - (yPos - properties.getHeight()) - xPos); break; } translate.transform(upDst, upDst); translate.transform(llDst, llDst); rect.setUpperRightX((float) upDst.getX()); rect.setUpperRightY((float) upDst.getY()); rect.setLowerLeftY((float) llDst.getY()); rect.setLowerLeftX((float) llDst.getX()); logger.debug("rectangle of signature has been created: {}", rect.toString()); signatureField.getWidget().setRectangle(rect); getStructure().setSignatureRectangle(rect); logger.debug("rectangle of signature has been created"); }
From source file:at.gv.egiz.pdfas.lib.impl.stamping.pdfbox.PDFAsVisualSignatureBuilder.java
License:EUPL
public void createFormaterRectangle(float[] params) { PDRectangle formrect = new PDRectangle(); float[] translated = new float[4]; getStructure().getAffineTransform().transform(params, 0, translated, 0, 2); formrect.setUpperRightX(translated[0]); formrect.setUpperRightY(translated[1]); formrect.setLowerLeftX(translated[2]); formrect.setLowerLeftY(translated[3]); getStructure().setFormaterRectangle(formrect); logger.debug("Formater rectangle has been created"); }
From source file:at.gv.egiz.pdfas.lib.impl.stamping.pdfbox2.PDFAsVisualSignatureBuilder.java
License:EUPL
public void createFormaterRectangle(float[] params) { PDRectangle formrect = new PDRectangle(); float[] translated = new float[4]; getStructure().getAffineTransform().transform(params, 0, translated, 0, 2); formrect.setUpperRightX(translated[0]); formrect.setUpperRightY(translated[1]); formrect.setLowerLeftX(translated[2]); formrect.setLowerLeftY(translated[3]); getStructure().setFormatterRectangle(formrect); logger.debug("Formater rectangle has been created"); }
From source file:ch.uzh.ifi.pdeboer.pdfpreprocessing.pdf.TextHighlight.java
License:Apache License
private PDRectangle boundingBox(final float lowerLeftX, final float lowerLeftY, final float upperRightX, final float upperRightY) { final PDRectangle boundingBox = new PDRectangle(); boundingBox.setLowerLeftX(lowerLeftX); boundingBox.setLowerLeftY(lowerLeftY); boundingBox.setUpperRightX(upperRightX); boundingBox.setUpperRightY(upperRightY); return boundingBox; }
From source file:com.ackpdfbox.app.PDFToImage.java
License:Apache License
private static void changeCropBox(PDDocument document, float a, float b, float c, float d) { for (PDPage page : document.getPages()) { System.out.println("resizing page"); PDRectangle rectangle = new PDRectangle(); rectangle.setLowerLeftX(a); rectangle.setLowerLeftY(b);//from w ww. j ava 2s .c o m rectangle.setUpperRightX(c); rectangle.setUpperRightY(d); page.setCropBox(rectangle); } }
From source file:com.ecmkit.service.convert.impl.PDFToImage.java
License:Apache License
private static void changeCropBoxes(PDDocument document, float a, float b, float c, float d) { List pages = document.getDocumentCatalog().getAllPages(); for (int i = 0; i < pages.size(); i++) { System.out.println("resizing page"); PDPage page = (PDPage) pages.get(i); PDRectangle rectangle = new PDRectangle(); rectangle.setLowerLeftX(a); rectangle.setLowerLeftY(b);/*www.j a va 2 s. com*/ rectangle.setUpperRightX(c); rectangle.setUpperRightY(d); page.setMediaBox(rectangle); page.setCropBox(rectangle); } }