Вот некоторый код, который скоро будет добавлен в пример AddAnnotations.java из загруженного исходного кода:
static final float INCH = 72;
float pw = page1.getMediaBox().getUpperRightX();
float ph = page1.getMediaBox().getUpperRightY();
PDAnnotationMarkup polygon = new PDAnnotationMarkup();
polygon.getCOSObject().setName(COSName.SUBTYPE, PDAnnotationMarkup.SUB_TYPE_POLYGON);
position = new PDRectangle();
position.setLowerLeftX(pw - INCH);
position.setLowerLeftY(ph - INCH);
position.setUpperRightX(pw - 2 * INCH);
position.setUpperRightY(ph - 2 * INCH);
polygon.setRectangle(position);
polygon.setColor(blue); // border color
polygon.getCOSObject().setItem(COSName.IC, red.toCOSArray()); // interior color
COSArray triangleVertices = new COSArray();
triangleVertices.add(new COSFloat(pw - INCH));
triangleVertices.add(new COSFloat(ph - 2 * INCH));
triangleVertices.add(new COSFloat(pw - INCH * 1.5f));
triangleVertices.add(new COSFloat(ph - INCH));
triangleVertices.add(new COSFloat(pw - 2 * INCH));
triangleVertices.add(new COSFloat(ph - 2 * INCH));
polygon.getCOSObject().setItem(COSName.VERTICES, triangleVertices);
polygon.setBorderStyle(borderThick);
annotations.add(polygon);
чтобы настроить свой собственный код, вам нужно настроить прямоугольник и передать свои вершины:
position.setLowerLeftX(418);
position.setLowerLeftY(110);
position.setUpperRightX(523);
position.setUpperRightY(133);
polygon.setRectangle(position);
float[] vertices = {418, 110, 523, 110, 522, 132, 419, 133};
COSArray verticesArray = new COSArray();
for (float v : vertices)
verticesArray.add(new COSFloat(v));
polygon.getCOSObject().setItem(COSName.VERTICES, verticesArray);
Это только для 2.0. В 3.0 будет тип PDAnnotationPolygon с соответствующими методами. Эта версия также будет поддерживать создание потоков внешнего вида, то есть вы сможете показывать PDF-файлы другим пользователям, кроме Adobe Reader. Большинство зрителей, например PDF.js и PDFBox не создают недостающие изображения, поэтому вы ничего не увидите.
Если вам нужен внешний вид для 2.0, вы можете попробовать с кодом в файле ShowAnnotation-6.java в https://issues.apache.org/jira/browse/PDFBOX-3353.
Для тестирования с версией 3.0, получите jar здесь:
https://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/pdfbox-app/3.0.0-SNAPSHOT/
Чтобы построить внешний вид, звоните polygon.constructAppearances();