Annota PDF

Questo blog è la continuazione del nostro blog precedente in cui abbiamo evidenziato alcune interessanti funzionalità di Aspose.PDF Cloud SDK per Java su come aggiungere Testo evidenziato o barrato e aggiungere annotazioni di linea o cerchio in PDF utilizzando Java REST API. In questo articolo, discuteremo in particolare i dettagli sull’aggiunta di annotazioni di testo, polilinee, ondulate e allegati all’interno di documenti PDF utilizzando il linguaggio di programmazione Java.

Aspose.PDF Cloud è una REST API che consente agli utenti di creare, manipolare e rendere file PDF esistenti in altri formati di documenti supportati. È possibile accedere alla Cloud API utilizzando i due approcci seguenti:

  • Accedi all’API tramite comandi cURL
  • Accedi all’API nel linguaggio di programmazione Java

Approfondiamo ulteriormente l’aggiunta di varie annotazioni ai documenti PDF utilizzando comandi cURL e codice Java.

Aggiungere annotazioni utilizzando il comando cURL

I comandi cURL sono uno dei modi più semplici e interessanti per accedere alle API REST. Quindi parliamo di come aggiungere le diverse annotazioni usando i comandi cURL. Nota che ogni API ti consente anche di accedere all’archiviazione Cloud dove i file possono essere archiviati per l’elaborazione, quindi per garantire l’integrità dei dati, le nostre API sono accessibili solo alle persone autorizzate. Pertanto, devi prima visitare Aspose.Cloud dashboard e se hai un account GitHub o Google, semplicemente Registrati. Altrimenti, fai clic sul pulsante Crea un nuovo account e fornisci le informazioni richieste. Ora accedi alla dashboard usando le credenziali, espandi la sezione Applicazioni dalla dashboard e scorri verso il basso fino alla sezione Credenziali client per vedere i dettagli ID client e Segreto client.

Il passo successivo è generare un JSON Web Token (JWT) in modo che le API siano accessibili tramite il prompt dei comandi.

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=7042694c-5251-4aba-83c9-e81e7518724f&client_secret=db246d4742e8cd22e7266c9391992689" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

Annotazione del testo

Un’annotazione di testo è un’annotazione allegata a una posizione specifica in un documento PDF. Quando è chiusa, l’annotazione viene visualizzata come un’icona; quando è aperta, dovrebbe visualizzare una finestra pop-up contenente il testo della nota nel font e nella dimensione scelti dal lettore. Per aggiungere l’annotazione di testo, dobbiamo usare l’API PostPageTextAnnotation. Usa il seguente comando cURL per aggiungere l’annotazione di testo con l’icona Nota.

 curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithBookmarks.pdf/pages/1/annotations/text" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-H  "Content-Type: application/json" \
-d "[{  \"Color\": {  \"A\": 0, \"R\": 0xDA,  \"G\": 0xA5, \"B\": 0x20    },  \"Contents\": \"Hello World \",  \"Modified\": \"05/26/2021 03:10:00.000 PM\",    \"Id\": \"1\",    \"Flags\": [      \"Default\"    ],    \"Name\": \"string\",    \"Rect\": {      \"LLX\": 100,      \"LLY\": 800,      \"URX\": 100,      \"URY\": 100    },    \"PageIndex\": 1,    \"ZIndex\": 1,    \"HorizontalAlignment\": \"Center\",    \"VerticalAlignment\": \"Center\",    \"CreationDate\": \"string\",    \"Subject\": \"Subject of Annotation\",    \"Title\": \"Annotation Title\",    \"RichText\": \"string\",    \"State\": \"Undefined\",    \"Open\": true,    \"Icon\": \"Note\"  }]"
Annotazione del testo in PDF

Immagine 1: Annotazione del testo con icona Nota nel file PDF.

I file PDF di esempio utilizzati nell’esempio sopra possono essere scaricati dai seguenti link

Annotazione polilinea

Le annotazioni Polyline sono utilizzate per disegnare a mano polilinee su una pagina. Possono contenere un numero qualsiasi di lati definiti dai vertici della polilinea. Le annotazioni Polyline con colore di riempimento trasparente sono selezionabili solo attorno alle loro linee visibili. Le annotazioni Polyline possono anche essere aggiunte utilizzando l’API PostPagePolyLineAnnotations.

curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithTable.pdf/pages/1/annotations/polyline" \
-H  "accept: application/json" \
-H  "authorization: Bearer " \
-H  "Content-Type: application/json" \
-d "[  {       \"Color\": {      \"A\": 0,      \"R\": 122,      \"G\": 132,      \"B\": 255    },    \"Contents\": \"Hello World...\",    \"Modified\": \"05/26/2021 03:10:00.000 PM\",    \"Id\": \"1\",    \"Flags\": [      \"Default\"    ],    \"Name\": \"Polyline\",    \"Rect\": {      \"LLX\": 100,      \"LLY\": 200,      \"URX\": 150,      \"URY\": 250    },    \"PageIndex\": 1,    \"ZIndex\": 1,    \"HorizontalAlignment\": \"Center\",    \"VerticalAlignment\": \"Center\",    \"CreationDate\": \"05/26/2021 03:10:00.000 PM\",    \"Subject\": \"Subject of Annotation\",    \"Title\": \"Title of Annotation\",    \"RichText\": \"<?xml version=\\\"1.0\\\"?><body xmlns=\\\"http://www.w3.org/1999/xhtml\\\" xmlns:xfa=\\\"http://www.xfa.org/schema/xfa-data/1.0/\\\" xfa:APIVersion=\\\"Acrobat:7.0.0\\\" xfa:spec=\\\"2.0.2\\\" ><span style=\\\"text-decoration:;font-size:10.0pt\\\">Contents</span></body>\",    \"InteriorColor\": {      \"A\": 255,      \"R\": 120,      \"G\": 110,      \"B\": 255    },    \"StartingStyle\": \"Circle\",    \"EndingStyle\": \"OpenArrow\",    \"Intent\": \"PolyLineDimension\",    \"Vertices\": [      {            \"X\": 164.611,            \"Y\": 499.629          },          {            \"X\": 192.858,            \"Y\": 509.857          },          {            \"X\": 226.461,            \"Y\": 493.785          }    ]  }]"

Annotazione ondulata

annotpdf - npm

Le annotazioni sottolineate ondulate o frastagliate aiutano a evidenziare le informazioni all’interno del documento. Possono essere aggiunte utilizzando l’API PostPageSquigglyAnnotations. Il comando fornito di seguito ti aiuta ad aggiungere annotazioni ondulate al documento PDF.

curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithTable.pdf/pages/1/annotations/squiggly" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-H  "Content-Type: application/json" \
-d "[  {    \"Color\": {      \"A\": 255,      \"R\": 120,      \"G\": 123,      \"B\": 150    },    \"Contents\": \"A squiggly Annotation\",    \"Modified\": \"05/26/2021 03:10:00.000 PM\",    \"Id\": \"1\",    \"Flags\": [      \"Default\"    ],    \"Name\": \"First Annotation\",    \"Rect\": {      \"LLX\": 100,      \"LLY\": 300,      \"URX\": 120,      \"URY\": 330    },    \"PageIndex\": 1,    \"ZIndex\": 1,    \"HorizontalAlignment\": \"Center\",    \"VerticalAlignment\": \"Center\",    \"CreationDate\": \"05/26/2021 03:10:00.000 PM\",    \"Subject\": \"Subject \",    \"Title\": \"Title of Squiggly\",     \"Starting\": {      \"X\": 162.663,      \"Y\": 654.5    },    \"StartingStyle\": \"Circle\",    \"Ending\": {      \"X\": 230.845,      \"Y\": 654.5    },    \"EndingStyle\": \"OpenArrow\",    \"InteriorColor\": {      \"A\": 255,      \"R\": 220,      \"G\": 220,      \"B\": 220    },    \"LeaderLine\": 10,    \"LeaderLineExtension\": 5,    \"LeaderLineOffset\": 2.5,    \"ShowCaption\": true,    \"CaptionOffset\": {      \"X\": 7,      \"Y\": 8    },    \"CaptionPosition\": \"Top\",    \"Intent\": \"LineArrow\",\"RichText\": \"string\",    \"QuadPoints\": [      {        \"X\": 100,        \"Y\": 200      }    ]  }]"

Annotazione allegato

Vari file possono essere aggiunti come annotazioni di allegato al documento PDF e per soddisfare questo requisito, è possibile utilizzare l’API PostPageFileAttachmentAnnotations. Eseguire il seguente comando cURL per allegare un file esistente al documento PDF. Nel nostro esempio, il file denominato PdfWithTable.pdf (già disponibile sullo storage cloud) viene utilizzato come allegato.

curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithBookmarks.pdf/pages/1/annotations/fileattachment" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-H  "Content-Type: application/json" \
 -d "[  {       \"Color\": {      \"A\": 255,      \"R\": 120,      \"G\": 120,      \"B\": 120    },    \"Contents\": \"Content\",    \"Modified\": \"05/26/2021 03:10:00.000 PM\",    \"Id\": \"1\",    \"Flags\": [      \"Default\"    ],    \"Name\": \"FileAttachment\",    \"Rect\": {      \"LLX\": 100,      \"LLY\": 200,      \"URX\": 120,      \"URY\": 2200    },    \"PageIndex\": 1,    \"ZIndex\": 0,    \"HorizontalAlignment\": \"Center\",    \"VerticalAlignment\": \"Top\",    \"CreationDate\": \"05/26/2021 03:10:00.000 PM\",    \"Subject\": \"Subject\",    \"Title\": \"Title\",    \"RichText\": \"string\",    \"Icon\": \"PushPin\",    \"Opacity\": 0,    \"FileDescription\": \"string\",    \"FileName\": \"PdfWithTable.pdf\",    \"FilePath\": \"PdfWithTable.pdf\"  }]"

Aggiungere annotazioni utilizzando Java

Oltre ai comandi cURL, un altro approccio all’utilizzo delle nostre API Cloud è accedervi tramite SDK di programmazione. Abbiamo sviluppato SDK di programmazione per linguaggi di programmazione popolari. Quindi, per lavorare con Annotazioni in PDF utilizzando il linguaggio Java, prova a utilizzare Aspose.PDF Cloud SDK per Java.

Il primo passo è installare SKD sul sistema. Cloud SDK è disponibile per il download su Maven e GitHub. Ora aggiungi i seguenti dettagli nel tuo file pom.xml per scaricare e utilizzare Aspose.Pdf.jar nel tuo progetto di build Maven.

<repositories>
 <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>https://artifact.aspose.cloud/repo</url>
    </repository>   
</repositories>
<dependencies>
 <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-pdf-cloud</artifactId>
        <version>21.1.0</version>
        <scope>compile</scope>
    </dependency>
 </dependencies>

Per ulteriori informazioni, visitare Come installare gli SDK di Aspose.Cloud.

Annotazioni di testo

Di seguito sono riportati i passaggi per aggiungere annotazioni di testo ai documenti PDF.

  • Il primo passo è creare un oggetto PdfApi in cui forniamo ClientID e ClientSecret come argomenti
  • Quindi creiamo l’oggetto Rettangolo in cui viene aggiunta l’annotazione
    • LLX - Coordinata X dell’angolo inferiore sinistro.
    • LLY - Y - coordinata dell’angolo inferiore sinistro.
    • URY - X - coordinata dell’angolo in alto a destra.
    • URY - Y - coordinata dell’angolo in alto a destra.
  • Crea l’oggetto TextAnnotation in cui definiamo l’allineamento usando il metodo setHorizontalAlignment(..).Imposta l’oggetto usando il metodo setSubject(…), lo stato predefinito usando il metodo setState(…), ecc.
  • Quindi crea l’oggetto ArrayList<> di tipo TextAnnotation e aggiungigli l’oggetto TextAnnotation creato sopra
  • Infine, chiamiamo postPageTextAnnotations(…) dove passiamo il nome del file PDF di input, PageNumber e l’ArrayList delle annotazioni creato sopra come argomenti
// Ottieni ClientID e ClientSecret da https://dashboard.aspose.cloud/
String clientId = "7042694c-5251-4aba-83c9-e81e7518724f";
String clientSecret = "db246d4742e8cd22e7266c9391992689";
				
// crea istanzaPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// documento PDF di input
String name = "PdfWithTable.pdf";	        
			    
// Carica il file dal sistema locale
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// caricare il file sullo storage cloud
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// numero di pagina in cui è necessario aggiungere l'annotazione
int pageNumber = 1;

// crea un oggetto Rettangolo in cui viene aggiunta l'Annotazione
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(600.)
    .URX(200.)
    .URY(650.);

// Crea ListArray di AnnotationFlags
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);

// Crea oggetto TextAnnotation
TextAnnotation textAnnotation = new TextAnnotation();
textAnnotation.setName("Annotation Name");
textAnnotation.setRect(rect);
textAnnotation.setFlags(flags);
textAnnotation.setHorizontalAlignment(HorizontalAlignment.CENTER);

// imposta il contenuto da visualizzare all'interno di Annotazione
textAnnotation.contents("Hello World...");
// Imposta l'icona per l'annotazione
textAnnotation.icon(TextIcon.KEY);

textAnnotation.setSubject("Text Box Subj");
textAnnotation.setZindex(1);

// lo stato predefinito dell'oggetto Annotazione
textAnnotation.setState(AnnotationState.COMPLETED);
		        
// crea ListArray di TextAnnotation
List<TextAnnotation> annotations = new ArrayList<>();

// aggiungi TextAnnotation creato sopra all'istanza di List
annotations.add(textAnnotation);

// chiama il metodo per aggiungere annotazioni al file PDF
AsposeResponse response = pdfApi.postPageTextAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Annotazioni polilineari

Il Cloud SDK fornisce anche le stesse capacità per aggiungere le annotazioni Polyline al documento PDF. Di seguito sono riportati i passaggi e il frammento di codice per soddisfare questo requisito.

  • Per prima cosa, dobbiamo creare un’istanza PdfApi e caricare il file sorgente sullo storage Cloud.
  • Crea ArrayList di tipo Point che definisce i punti in cui verranno disegnate le polilinee.
  • Il passo successivo consiste nel creare un oggetto PolyLineAnnotation in cui definiamo la regione rettangolare e passiamo Points ListArray al metodo setVertices(…).
  • Per impostare il colore degli interni, utilizzare il metodo setInteriorColor(…) e passare l’istanza Color come argomento.
  • Ora chiama i metodi startingStyle(…) e endingStyle(…) per definire lo stile di inizio e fine dell’annotazione. Questi metodi prendono il valore dall’enumerazione LineEnding come argomenti.
  • Infine, chiama il metodo postPagePolyLineAnnotations(…) della classe PdfApi per visualizzare l’annotazione all’interno del documento PDF.
// Ottieni ClientID e ClientSecret da https://dashboard.aspose.cloud/
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
				
// crea istanzaPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// documento PDF di input
String name = "PdfWithTable.pdf";	        
			    
// Carica il file dal sistema locale
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// caricare il file sullo storage cloud
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// numero di pagina per il file di input in cui verrà aggiunta l'annotazione
int pageNumber = 1;

// regione rettangolare per l'annotazione
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(600.)
    .URX(200.)
    .URY(650.);

// specificare i vertici per l'annotazione
List<Point> vertices = new ArrayList();
vertices.add(new Point().X(10.).Y(10.));
vertices.add(new Point().X(20.).Y(10.));
vertices.add(new Point().X(10.).Y(20.));
vertices.add(new Point().X(10.).Y(10.));

List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);

// creare oggetto PolyLineAnnotation
PolyLineAnnotation annotation = new PolyLineAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
// imposta l'allineamento orizzontale dell'annotazione
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");

// creare oggetto colore
Color color = new Color();
color.setA(255);
color.setR(120);
color.setG(140);
color.setB(130);

// imposta il colore interno per l'istanza di annotazione
annotation.setInteriorColor(color);
		        
annotation.setVertices(vertices);
// specificare lo stile iniziale per l'annotazione
annotation.startingStyle(LineEnding.OPENARROW);

// imposta lo stile finale per l'annotazione
annotation.endingStyle(LineEnding.SQUARE);

List<PolyLineAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
		        
// chiama il metodo per aggiungere l'annotazione polilinea alla prima pagina del documento
AsposeResponse response = pdfApi.postPagePolyLineAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Annotazioni ondulate

Una classe separata denominata SquigglyAnnotation viene utilizzata per aggiungere annotazioni Squiggly al documento PDF. Il frammento di codice riportato di seguito può essere utilizzato per aggiungere annotazioni Squiggly al file PDF disponibile sullo storage Cloud.

// Ottieni ClientID e ClientSecret da https://dashboard.aspose.cloud/
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
				
// crea istanzaPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// documento PDF di input
String name = "PdfWithTable.pdf";	        
			    
// Carica il file dal sistema locale
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// caricare il file sullo storage cloud
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// numero di pagina per il file di input in cui verrà aggiunta l'annotazione
int pageNumber = 1;

// regione rettangolare per l'annotazione
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(600.)
    .URX(200.)
    .URY(650.);

// specificare i vertici per l'annotazione
List<Point> vertices = new ArrayList();
vertices.add(new Point().X(10.).Y(10.));
vertices.add(new Point().X(20.).Y(10.));
vertices.add(new Point().X(10.).Y(20.));
vertices.add(new Point().X(10.).Y(10.));

List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);

// crea oggetto SquigglyAnnotation
SquigglyAnnotation annotation = new SquigglyAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
annotation.setModified("28/05/2021 00:00:00.000 AM");
		        
// creare oggetto colore
Color color = new Color();
color.setA(155);
color.setR(120);
color.setG(140);
color.setB(130);

// imposta il colore interno per l'istanza di annotazione
annotation.color(color);

// imposta punti di annotazione		        
annotation.setQuadPoints(vertices);

List<SquigglyAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
		        
// chiama il metodo per aggiungere l'annotazione Squiggly alla prima pagina del documento
AsposeResponse response = pdfApi.postPageSquigglyAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Annotazioni degli allegati di file

Per aggiungere l’annotazione dell’allegato file, prova a usare il seguente frammento di codice. La descrizione del codice è la stessa condivisa nelle sezioni precedenti, tranne per il fatto che devi usare l’oggetto FileAttachmentAnnotation per soddisfare questo requisito.

// Ottieni ClientID e ClientSecret da https://dashboard.aspose.cloud/
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
				
// crea istanzaPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// documento PDF di input
String name = "PdfWithTable.pdf";	        
			    
// Carica il file dal sistema locale
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// caricare il file sullo storage cloud
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// numero di pagina per il file di input in cui verrà aggiunta l'annotazione
int pageNumber = 1;

// regione rettangolare per l'annotazione
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(100.)
    .URX(200.)
    .URY(200.);

List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);

// creare oggetto FileAttachmentAnnotation
FileAttachmentAnnotation annotation = new FileAttachmentAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
annotation.setModified("28/05/2021 00:00:00.000 AM");
		        
// percorso del file allegato
annotation.setFilePath("images.jpeg");
// nome del file allegato
annotation.setFileName("images.jpeg");

// crea un'istanza di Elenco di FileAttachment
List<FileAttachmentAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
		        
// chiama il metodo per aggiungere l'annotazione FileAttachment alla prima pagina del documento
AsposeResponse response = pdfApi.postPageFileAttachmentAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Conclusione

In questo articolo, abbiamo discusso i passaggi e i dettagli correlati per aggiungere annotazioni di testo, polilinee, squiggly e fileattachment al documento PDF. Poiché i nostri Cloud SDK sono open source, puoi scaricare il codice sorgente completo da GitHub. Il repository contiene anche altri esempi utili su come utilizzare Java Cloud SDK per creare e manipolare file PDF esistenti. In caso di domande correlate, non esitare a contattarci tramite i forum di supporto clienti gratuiti26.

Articoli correlati

Ti consigliamo vivamente di visitare i seguenti articoli: