Anmærk PDF

Denne blog er en fortsættelse af vores tidligere blog, hvor vi har fremhævet nogle spændende funktioner i Aspose.PDF Cloud SDK til Java om, hvordan man tilføjer Highlight eller Strikeout Text, og tilføjer linje- eller cirkelannoteringer i PDF ved hjælp af Java REST API . I denne artikel vil vi især diskutere detaljerne om tilføjelse af tekst-, polylinje-, snoede og vedhæftede annoteringer i PDF-dokumenter ved hjælp af Java-programmeringssprog.

Aspose.PDF Cloud er en REST API, der gør det muligt for brugerne at oprette, manipulere og gengive eksisterende PDF-filer til andre understøttede dokumentformater. Cloud API kan tilgås ved hjælp af følgende to tilgange:

  • Få adgang til API’en via cURL-kommandoer
  • Få adgang til API’et i programmeringssproget Java

Lad os yderligere diskutere tilføjelsen af forskellige annoteringer til PDF dokumenter ved hjælp af cURL-kommandoer og Java-kode.

Tilføj anmærkninger ved hjælp af cURL-kommandoen

cURL-kommandoerne er en af de nemmeste og sejeste måder at få adgang til REST API’erne på. Så lad os tale om at tilføje de forskellige annoteringer ved hjælp af cURL-kommandoerne. Bemærk venligst, at hver API også giver dig adgang til Cloud-lageret, hvor filer kan gemmes til behandling, så for at sikre dataintegritet er vores API’er kun tilgængelige for autoriserede personer. Derfor skal du først besøge Aspose.Cloud dashboard, og hvis du har en GitHub- eller Google-konto, skal du blot tilmelde dig. Ellers skal du klikke på knappen Opret en ny konto og angive de nødvendige oplysninger. Log nu ind på dashboardet ved hjælp af legitimationsoplysninger, udvid applikationssektionen fra dashboardet og rul ned mod sektionen Klientlegitimationsoplysninger for at se klient-id og klienthemmelighedsoplysninger.

Nu er næste trin at generere et JSON Web Token (JWT), så API’erne er tilgængelige via kommandoprompten.

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"

Tekstanmærkning

En tekstanmærkning er en anmærkning knyttet til en bestemt placering i et PDF dokument. Når den er lukket, vises annoteringen som et ikon; når den åbnes, skulle den vise et pop-up vindue, der indeholder noteteksten i den skrifttype og størrelse, som læseren har valgt. For at tilføje tekstanmærkningen skal vi bruge PostPageTextAnnotation API. Brug følgende cURL-kommando til at tilføje tekstanmærkning med note-ikonet.

 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\"  }]"
Tekstanmærkning i PDF

Billede 1:- Tekstanmærkning med note-ikon i PDF-fil.

Eksempel PDF-filer, der er brugt i ovenstående eksempel, kan downloades fra følgende links

Polyline annotering

Polyline-annoteringerne bruges til at håndtegne polylinjer på en side. De kan indeholde et hvilket som helst antal sider, der er defineret af polyline-hjørnerne. Polylinjeannoteringer med gennemsigtig fyldfarve kan kun vælges omkring deres synlige linjer. Polyline-annoteringerne kan også tilføjes ved hjælp af PostPagePolyLineAnnotations API.

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          }    ]  }]"

Snurret anmærkning

annotpdf - npm

De snoede eller takkede understregede anmærkninger hjælper med at fremhæve oplysningerne i dokumentet. De kan tilføjes ved hjælp af PostPageSquigglyAnnotations API. Givet nedenstående kommando hjælper dig med at tilføje Squiggly-annotering til PDF-dokumentet.

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      }    ]  }]"

Vedhæftede anmærkning

Forskellige filer kan tilføjes som vedhæftede anmærkninger til PDF-dokumentet, og for at opfylde dette krav kan PostPageFileAttachmentAnnotations API bruges. Udfør følgende cURL-kommando for at vedhæfte en eksisterende fil til PDF-dokumentet. I vores eksempel bruges filen med navnet PdfWithTable.pdf (allerede tilgængelig på cloud storage) som en vedhæftet fil.

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\"  }]"

Tilføj anmærkninger ved hjælp af Java

Bortset fra cURL-kommandoer er en anden tilgang til at bruge vores Cloud API’er at få adgang til dem gennem programmerings-SDK’er. Vi har udviklet programmerings-SDK’erne til populære programmeringssprog. Så for at arbejde med annoteringer i PDF ved hjælp af Java-sprog, prøv venligst at bruge Aspose.PDF Cloud SDK for Java.

Det første trin er at installere SKD’en på systemet. Cloud SDK er tilgængelig til download over Maven og GitHub. Tilføj nu følgende detaljer i din pom.xml-fil for at downloade og bruge Aspose.Pdf.jar i dit Maven-byggeprojekt.

<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>

For mere information, besøg venligst Sådan installeres Aspose.Cloud SDK’er.

Tekstanmærkninger

Nedenstående er trinene til at tilføje tekstanmærkninger til PDF-dokumenterne.

  • Det første trin er at oprette et PdfApi objekt, hvor vi giver ClientID og ClientSecret som argumenter
  • Derefter opretter vi objektet Rektangel, hvor annoteringen tilføjes
    • LLX - X-koordinat for nederste venstre hjørne.
    • LLY - Y - koordinat for nederste venstre hjørne.
    • URY - X - koordinat for det øverste højre hjørne.
    • URY - Y - koordinat for det øverste højre hjørne.
  • Opret TextAnnotation objekt, hvor vi definerer justering ved hjælp af setHorizontalAlignment(..) metoden. Indstil emnet ved hjælp af setSubject(…)-metoden, standardtilstanden ved hjælp af setState(…)-metoden osv
  • Opret derefter objektet i ArrayList<> af typen TextAnnotation og tilføj det ovenfor oprettede TextAnnotation-objekt til det
  • Til sidst skal du kalde postPageTextAnnotations(…), hvor vi sender input PDF-filnavn, Sidenummer og Annotations ArrayList oprettet ovenfor som argumenter
// Hent ClientID og ClientSecret fra https://dashboard.aspose.cloud/
String clientId = "7042694c-5251-4aba-83c9-e81e7518724f";
String clientSecret = "db246d4742e8cd22e7266c9391992689";
				
// oprette PdfApi instans
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// input PDF-dokument
String name = "PdfWithTable.pdf";	        
			    
// Indlæs filen fra det lokale system
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// upload filen til skylageret
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// sidenummer, hvor anmærkning skal tilføjes
int pageNumber = 1;

// oprette rektangelobjekt, hvor anmærkning tilføjes
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(600.)
    .URX(200.)
    .URY(650.);

// Opret ListArray af annotationsflag
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);

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

// indstille indholdet til at blive vist i Annotation
textAnnotation.contents("Hello World...");
// Indstil ikonet for annotering
textAnnotation.icon(TextIcon.KEY);

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

// standardtilstanden for annotationsobjekt
textAnnotation.setState(AnnotationState.COMPLETED);
		        
// oprette ListArray af TextAnnotation
List<TextAnnotation> annotations = new ArrayList<>();

// tilføje ovenfor oprettede TextAnnotation til List-forekomst
annotations.add(textAnnotation);

// kald metoden for at tilføje annotering til PDF-fil
AsposeResponse response = pdfApi.postPageTextAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Polyline-anmærkninger

Cloud SDK giver også de samme muligheder for at tilføje Polyline-annoteringer til PDF-dokument. Nedenstående er trinene og kodestykket for at opfylde dette krav.

  • For det første skal vi oprette en PdfApi-instans og uploade kildefilen til Cloud-lagring.
  • Opret ArrayList af typen Point, som definerer de punkter, hvor polylinjerne vil blive tegnet.
  • Det næste trin er at oprette et PolyLineAnnotation objekt, hvor vi definerer det rektangulære område og sender Points ListArray til setVertices(…) metoden.
  • For at indstille den indvendige farve skal du bruge metoden setInteriorColor(…) og sende forekomsten Color som et argument.
  • Kald nu startStyle(…) og endingStyle(…) metoderne for at definere start- og slutstil for annotering. Disse metoder tager værdi fra LineEnding-optælling som argumenter.
  • Til sidst skal du kalde postPagePolyLineAnnotations(…)-metoden for PdfApi-klassen for at gengive Annotation inde i PDF-dokumentet.
// Hent ClientID og ClientSecret fra https://dashboard.aspose.cloud/
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
				
// oprette PdfApi instans
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// input PDF-dokument
String name = "PdfWithTable.pdf";	        
			    
// Indlæs filen fra det lokale system
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// upload filen til skylageret
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// sidenummer for inputfil, hvor anmærkning vil blive tilføjet
int pageNumber = 1;

// rektangulært område for annoteringen
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(600.)
    .URX(200.)
    .URY(650.);

// angiv hjørnerne for annotationen
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);

// oprette PolyLineAnnotation-objekt
PolyLineAnnotation annotation = new PolyLineAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
// indstille den horisontale justering af annotering
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");

// skabe et farveobjekt
Color color = new Color();
color.setA(255);
color.setR(120);
color.setG(140);
color.setB(130);

// indstille den interne farve for annotationsforekomsten
annotation.setInteriorColor(color);
		        
annotation.setVertices(vertices);
// angiv startstilen for annotering
annotation.startingStyle(LineEnding.OPENARROW);

// indstille slutstilen for annotering
annotation.endingStyle(LineEnding.SQUARE);

List<PolyLineAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
		        
// kald metoden til at tilføje Polyline Annotation til første side af dokumentet
AsposeResponse response = pdfApi.postPagePolyLineAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Svinklede anmærkninger

En separat klasse ved navn SquigglyAnnotation bruges til at tilføje Squiggly-annotering til PDF-dokumentet. Det givne kodestykke nedenfor kan bruges til at tilføje Squiggly-annoteringer til PDF-filen, der er tilgængelig på Cloud-lagring.

// Hent ClientID og ClientSecret fra https://dashboard.aspose.cloud/
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
				
// oprette PdfApi instans
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// input PDF-dokument
String name = "PdfWithTable.pdf";	        
			    
// Indlæs filen fra det lokale system
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// upload filen til skylageret
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// sidenummer for inputfil, hvor anmærkning vil blive tilføjet
int pageNumber = 1;

// rektangulært område for annoteringen
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(600.)
    .URX(200.)
    .URY(650.);

// angiv hjørnerne for annotationen
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);

// oprette SquigglyAnnotation-objekt
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");
		        
// skabe et farveobjekt
Color color = new Color();
color.setA(155);
color.setR(120);
color.setG(140);
color.setB(130);

// indstille den interne farve for annotationsforekomsten
annotation.color(color);

// sæt anmærkningspunkter		        
annotation.setQuadPoints(vertices);

List<SquigglyAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
		        
// kald metoden for at tilføje Squiggly Annotation til første side af dokumentet
AsposeResponse response = pdfApi.postPageSquigglyAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Anmærkninger til vedhæftede filer

For at tilføje annoteringen af den vedhæftede fil, prøv venligst at bruge følgende kodestykke. Kodebeskrivelsen er den samme som delt i ovenstående afsnit, bortset fra at du skal bruge objektet FileAttachmentAnnotation for at opfylde dette krav.

// Hent ClientID og ClientSecret fra https://dashboard.aspose.cloud/
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
				
// oprette PdfApi instans
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// input PDF-dokument
String name = "PdfWithTable.pdf";	        
			    
// Indlæs filen fra det lokale system
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// upload filen til skylageret
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// sidenummer for inputfil, hvor anmærkning vil blive tilføjet
int pageNumber = 1;

// rektangulært område for annotationen
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(100.)
    .URX(200.)
    .URY(200.);

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

// oprette FileAttachmentAnnotation-objekt
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");
		        
// stien til den vedhæftede fil
annotation.setFilePath("images.jpeg");
// vedhæftede filnavn
annotation.setFileName("images.jpeg");

// oprette en listeforekomst af FileAttachment
List<FileAttachmentAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
		        
// kald metoden til at tilføje FileAttachment Annotation til første side af dokumentet
AsposeResponse response = pdfApi.postPageFileAttachmentAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Konklusion

I denne artikel har vi diskuteret trinene og relaterede detaljer til tilføjelse af tekst-, polylinje-, squiggly- og filvedhæftningsanmærkninger til PDF-dokumentet. Da vores Cloud SDK’er er open source, kan du downloade den komplette kildekode fra GitHub. Depotet indeholder også andre nyttige eksempler på, hvordan du bruger Java Cloud SDK til at oprette og manipulere eksisterende PDF-filer. Hvis du har relaterede spørgsmål, er du velkommen til at kontakte os via gratis kundesupportfora.

Relaterede artikler

Vi anbefaler stærkt, at du besøger følgende artikler: