Annotations

Questa guida mostra come aggiungere, configurare e rimuovere le annotazioni PDF utilizzando la gerarchia di classi Annotation in Aspose.PDF FOSS per Java. Imparerai a creare annotazioni widget, testo libero, evidenziazione e cerchio, e a appiattire o eliminare le annotazioni usando PdfAnnotationEditor.

Gerarchia delle annotazioni

La classe astratta Annotation è la base per tutte le annotazioni PDF. Tutte le annotazioni sono posizionate su un Page a un Rectangle e vengono aggiunte tramite page.getAnnotations().add(annotation).

WidgetAnnotation

WidgetAnnotation rappresenta un widget di modulo. L’aspetto è controllato tramite AppearanceCharacteristics, che espone setBorder(), setBackground(), setRotate() e setCaption().

try (Document doc = new Document()) {
    PageCollection pages = doc.getPages();
    Page page = pages.add();
    WidgetAnnotation w = new WidgetAnnotation(page, new Rectangle(0, 0, 100, 50));
    w.getCharacteristics().setBorder(Color.fromRgb(1, 0, 0));
    w.getCharacteristics().setCaption("Submit");
    page.getAnnotations().add(w);
    doc.save("annotated.pdf");
}

FreeTextAnnotation

FreeTextAnnotation visualizza una didascalia di testo in una posizione specificata. Accetta un DefaultAppearance per impostare il carattere, la dimensione e il colore del testo dell’annotazione.

DefaultAppearance da = new DefaultAppearance("Helv", 12, Color.BLACK);
FreeTextAnnotation fta = new FreeTextAnnotation(page,
    new Rectangle(50, 50, 200, 100), da);
fta.setContents("Review comment here");
page.getAnnotations().add(fta);

setCallout(double[][]) imposta una linea di richiamo a tre punti per l’annotazione. getIntent() restituisce il valore FreeTextIntent dell’annotazione.

Annotazioni di markup

HighlightAnnotation e UnderlineAnnotation segnano intervalli di testo con quad points. Il metodo getQuadPoints() restituisce un array a 8 elementi che definisce i quattro angoli della regione contrassegnata.

try (Document doc = new Document("input.pdf")) {
    PageCollection pages = doc.getPages();
    Page page = pages.get(1);
    HighlightAnnotation h = new HighlightAnnotation(page,
        new Rectangle(100, 200, 300, 220));
    page.getAnnotations().add(h);
    doc.save("highlighted.pdf");
}

CircleAnnotation e CaretAnnotation

CircleAnnotation disegna un’ellisse nel rettangolo fornito; CaretAnnotation segna un punto di inserimento nel testo. Entrambi estendono Annotation e condividono le stesse proprietà di colore e bordo.

try (Document doc = new Document()) {
    PageCollection pages = doc.getPages();
    Page page = pages.add();
    CircleAnnotation circle = new CircleAnnotation(page, new Rectangle(100, 100, 200, 200));
    circle.setColor(Color.fromRgb(0, 0, 1));
    page.getAnnotations().add(circle);
    doc.save("circle.pdf");
}

Appiattimento delle annotazioni

Usa PdfAnnotationEditor.flattenAnnotations() per unire tutte le annotazioni nello stream di contenuto della pagina, rendendole non modificabili.

try (PdfAnnotationEditor editor = new PdfAnnotationEditor()) {
    editor.bindPdf("annotated.pdf");
    editor.flattenAnnotations();
    editor.save("flat.pdf");
}

Rimozione delle annotazioni per tipo

Chiama deleteAnnotations(type) con il nome di un tipo di annotazione per rimuovere tutte le annotazioni di quel tipo da ogni pagina nel documento collegato:

try (PdfAnnotationEditor editor = new PdfAnnotationEditor()) {
    editor.bindPdf("input.pdf");
    editor.deleteAnnotations("Highlight");
    editor.save("output.pdf");
}

Vedi anche

 Italiano