Annotations de forme via Java
Les annotations de forme dans cette section couvrent les types d’annotations géométriques tels que les carrés, les cercles, les polygones, les polylignes et les lignes.
Ajouter des annotations de carrés, de cercles, de polygones et de polylignes
Utilisez ces exemples lorsque vous devez placer des annotations géométriques avec des couleurs personnalisées, une opacité, des données contextuelles ou des tableaux de points.
- Ouvrez le PDF source Document.
- Créez l’annotation de forme requise et configurez son rectangle, ses points et ses propriétés visuelles.
- Ajoutez l’annotation à la page et enregistrez le document mis à jour.
public static void squareAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
SquareAnnotation squareAnnotation = new SquareAnnotation(
document.getPages().get_Item(1),
new Rectangle(60, 600, 250, 450, true));
squareAnnotation.setTitle("John Smith");
squareAnnotation.setColor(Color.getBlue());
squareAnnotation.setInteriorColor(Color.getBlueViolet());
squareAnnotation.setOpacity(0.25);
document.getPages().get_Item(1).getAnnotations().add(squareAnnotation);
document.save(outputFile.toString());
}
}
public static void circleAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
CircleAnnotation circleAnnotation = new CircleAnnotation(
document.getPages().get_Item(1),
new Rectangle(270, 160, 483, 383, true));
circleAnnotation.setTitle("John Smith");
circleAnnotation.setColor(Color.getRed());
circleAnnotation.setInteriorColor(Color.getMistyRose());
circleAnnotation.setOpacity(0.5);
circleAnnotation.setPopup(new PopupAnnotation(
document.getPages().get_Item(1),
new Rectangle(842, 316, 1021, 459, true)));
document.getPages().get_Item(1).getAnnotations().add(circleAnnotation);
document.save(outputFile.toString());
}
}
public static void polygonAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
PolygonAnnotation polygonAnnotation = new PolygonAnnotation(
document.getPages().get_Item(1),
new Rectangle(200, 300, 400, 400, true),
new Point[]{
new Point(200, 300),
new Point(220, 300),
new Point(250, 330),
new Point(300, 304),
new Point(300, 400)
});
polygonAnnotation.setTitle("John Smith");
polygonAnnotation.setColor(Color.getBlue());
polygonAnnotation.setInteriorColor(Color.getBlueViolet());
polygonAnnotation.setOpacity(0.25);
document.getPages().get_Item(1).getAnnotations().add(polygonAnnotation);
document.save(outputFile.toString());
}
}
public static void polylineAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
PolylineAnnotation polylineAnnotation = new PolylineAnnotation(
document.getPages().get_Item(1),
new Rectangle(270, 193, 571, 383, true),
new Point[]{
new Point(545, 150),
new Point(545, 190),
new Point(667, 190),
new Point(667, 110),
new Point(626, 111)
});
polylineAnnotation.setTitle("John Smith");
polylineAnnotation.setColor(Color.getRed());
polylineAnnotation.setPopup(new PopupAnnotation(
document.getPages().get_Item(1),
new Rectangle(842, 196, 1021, 338, true)));
document.getPages().get_Item(1).getAnnotations().add(polylineAnnotation);
document.save(outputFile.toString());
}
}
Obtenir des annotations de carrés, de cercles, de polygones et de polylignes
Ces exemples inspectent la collection d’annotations de page et affichent les rectangles d’annotations géométriques par type.
- Ouvrez le PDF source Document.
- Parcourez les annotations de la page.
- Filtrez par la valeur AnnotationType requise et affichez le rectangle.
public static void squareAnnotationGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Square) {
System.out.println(annotation.getRect());
}
}
}
}
public static void circleAnnotationGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Circle) {
System.out.println(annotation.getRect());
}
}
}
}
public static void polygonAnnotationGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Polygon) {
System.out.println(annotation.getRect());
}
}
}
}
public static void polylineAnnotationGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.PolyLine) {
System.out.println(annotation.getRect());
}
}
}
}
Supprimer les annotations de carré, de cercle, de polygone et de polyligne
Utilisez ces exemples lorsque les annotations de forme d’un type spécifique doivent être supprimées de la page.
- Ouvrez le PDF source Document.
- Collectez les annotations du type géométrique requis.
- Supprimez les annotations collectées et enregistrez le fichier de sortie.
public static void squareAnnotationDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Square) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
document.getPages().get_Item(1).getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
public static void circleAnnotationDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Circle) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
document.getPages().get_Item(1).getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
public static void polygonAnnotationDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Polygon) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
document.getPages().get_Item(1).getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
public static void polylineAnnotationDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.PolyLine) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
document.getPages().get_Item(1).getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
Ajouter une annotation de ligne
Cet exemple crée une annotation de ligne avec des fins de flèches, une mise en forme des bordures et une note contextuelle.
- Ouvrez le PDF source Document.
- Créez une LineAnnotation avec des points de début et de fin.
- Configurez l’apparence, ajoutez la fenêtre contextuelle et enregistrez le document.
public static void lineAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
LineAnnotation lineAnnotation = new LineAnnotation(
document.getPages().get_Item(1),
new Rectangle(550, 93, 562, 439, true),
new Point(556, 99),
new Point(556, 443));
lineAnnotation.setTitle("John Smith");
lineAnnotation.setColor(Color.getRed());
lineAnnotation.setStartingStyle(LineEnding.OpenArrow);
lineAnnotation.setEndingStyle(LineEnding.OpenArrow);
Border border = new Border(lineAnnotation);
border.setWidth(3);
lineAnnotation.setBorder(border);
PopupAnnotation popup = new PopupAnnotation(
document.getPages().get_Item(1),
new Rectangle(842, 124, 1021, 266, true));
lineAnnotation.setPopup(popup);
document.getPages().get_Item(1).getAnnotations().add(lineAnnotation);
document.save(outputFile.toString());
}
}
Obtenir des annotations de ligne
Cet exemple lit les annotations de ligne et affiche leurs coordonnées de début et de fin.
- Ouvrez le PDF source Document.
- Parcourez les annotations de la page et sélectionnez AnnotationType.
Line. - Diffusez chaque correspondance sur LineAnnotation et affichez ses coordonnées.
public static void lineAnnotationsGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Line) {
LineAnnotation la = (LineAnnotation) annotation;
System.out.printf("[%s,%s]-[%s,%s]%n",
la.getStarting().getX(), la.getStarting().getY(),
la.getEnding().getX(), la.getEnding().getY());
}
}
}
}
Supprimer les annotations de ligne
Utilisez cette approche lorsque les annotations de ligne doivent être supprimées de la page.
- Ouvrez le PDF source Document.
- Collectez les annotations de type AnnotationType.
Line. - Supprimez les annotations collectées et enregistrez le document.
public static void lineAnnotationsDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
Page page = document.getPages().get_Item(1);
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : page.getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Line) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
page.getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}