Додати анотації до PDF

Цей блог є продовженням нашого попереднього блогу, де ми виділили деякі захоплюючі функції Aspose.PDF Cloud SDK для Java про те, як додавати Виділяти або закреслювати текст і додавати анотації лінії чи кола у PDF за допомогою Java REST API . У цій статті ми, зокрема, обговоримо деталі додавання анотацій тексту, ламаної лінії, хвилястих елементів і вкладень у документи PDF за допомогою мови програмування Java.

Aspose.PDF Cloud — це REST API, який дозволяє користувачам створювати, маніпулювати та відтворювати існуючі PDF-файли в інших підтримуваних форматах документів. Доступ до Cloud API можна отримати за допомогою таких двох підходів:

  • Доступ до API за допомогою команд cURL
  • Доступ до API на мові програмування Java

Давайте далі обговоримо додавання різних анотацій до документів PDF за допомогою команд cURL і коду Java.

Додайте анотації за допомогою команди cURL

Команди cURL є одним із найпростіших і найкрутіших способів доступу до REST API. Отже, давайте поговоримо про додавання різних анотацій за допомогою команд cURL. Зауважте, що кожен API також дає вам доступ до хмарного сховища, де файли можуть зберігатися для обробки, тому для забезпечення цілісності даних наші API доступні лише авторизованим особам. Тому вам потрібно спочатку відвідати інформаційну панель Aspose.Cloud і, якщо у вас є обліковий запис GitHub або Google, просто зареєструватися. В іншому випадку натисніть кнопку Створити новий обліковий запис і надайте необхідну інформацію. Тепер увійдіть на інформаційну панель за допомогою облікових даних, розгорніть розділ «Програми» на інформаційній панелі та прокрутіть униз до розділу «Облікові дані клієнта», щоб переглянути дані про ідентифікатор клієнта та секрет клієнта.

Тепер наступним кроком є створення JSON Web Token (JWT), щоб API були доступні через командний рядок.

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"

Текстова анотація

Текстова анотація – це анотація, додана до певного місця в документі PDF. У закритому стані анотація відображається у вигляді значка; після відкриття воно має відобразити спливаюче вікно з текстом примітки у шрифті та розмірі, вибраному читачем. Щоб додати текстову анотацію, нам потрібно використовувати API PostPageTextAnnotation. Використовуйте наступну команду cURL, щоб додати текстову анотацію зі значком примітки.

 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\"  }]"
Текстові анотації в PDF

Зображення 1: - Текстова анотація зі значком примітки у файлі PDF.

Зразки PDF-файлів, використаних у наведеному вище прикладі, можна завантажити за наведеними нижче посиланнями

Анотація полілінії

Анотації Polyline використовуються для малювання поліліній на сторінці вручну. Вони можуть містити будь-яку кількість сторін, визначених вершинами полілінії. Анотації поліліній із прозорим кольором заливки можна вибрати лише навколо видимих ліній. Анотації Polyline також можна додати за допомогою 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          }    ]  }]"

Squiggly Анотація

annotpdf - npm

Вигнуті або зубчасті підкреслені анотації допомагають виділити інформацію в документі. Їх можна додати за допомогою API PostPageSquigglyAnnotations. Наведена нижче команда допоможе вам додати анотацію Squiggly до документа 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      }    ]  }]"

Анотація вкладення

До PDF-документа можна додавати різні файли як анотації вкладень, і для виконання цієї вимоги можна використовувати API PostPageFileAttachmentAnnotations. Виконайте таку команду cURL, щоб приєднати наявний файл до документа PDF. У нашому прикладі файл під назвою PdfWithTable.pdf (вже доступний у хмарному сховищі) використовується як вкладення.

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

Додайте анотації за допомогою Java

Окрім команд cURL, іншим підходом до використання наших хмарних API є доступ до них через SDK програмування. Ми розробили SDK програмування для популярних мов програмування. Отже, щоб працювати з анотаціями в PDF за допомогою мови Java, спробуйте скористатися Aspose.PDF Cloud SDK для Java.

Першим кроком є установка SKD в систему. Cloud SDK доступний для завантаження через Maven і GitHub. Тепер додайте наступні відомості у свій файл pom.xml, щоб завантажити та використовувати Aspose.Pdf.jar у вашому проекті збірки 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>

Для отримання додаткової інформації відвідайте Як встановити Aspose.Cloud SDKs.

Текстові анотації

Нижче наведено кроки для додавання текстових анотацій до документів PDF.

  • Першим кроком є створення об’єкта PdfApi, де ми надаємо ClientID і ClientSecret як аргументи
  • Потім ми створюємо об’єкт Rectangle, до якого додається анотація
    • LLX - X-координата нижнього лівого кута.
    • LLY - Y - координата нижнього лівого кута.
    • URY - X - координата правого верхнього кута.
    • URY - Y - координата правого верхнього кута.
  • Створіть об’єкт TextAnnotation, де ми визначимо вирівнювання за допомогою методу setHorizontalAlignment(..).Встановіть тему за допомогою методу setSubject(…), стандартний стан за допомогою методу setState(…) тощо
  • Потім створіть об’єкт ArrayList<> типу TextAnnotation і додайте до нього створений вище об’єкт TextAnnotation
  • Нарешті, викличте postPageTextAnnotations(…), де ми передаємо ім’я вхідного PDF-файлу, PageNumber і створений вище список анотацій ArrayList як аргументи
// Отримайте ClientID і ClientSecret з https://dashboard.aspose.cloud/
String clientId = "7042694c-5251-4aba-83c9-e81e7518724f";
String clientSecret = "db246d4742e8cd22e7266c9391992689";
				
// екземпляр createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// вхідний документ PDF
String name = "PdfWithTable.pdf";	        
			    
// Завантажте файл з локальної системи
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// завантажити файл у хмарне сховище
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// номер сторінки, де потрібно додати анотацію
int pageNumber = 1;

// створити об’єкт Rectangle, куди додається анотація
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(600.)
    .URX(200.)
    .URY(650.);

// Створіть ListArray з AnnotationFlags
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);

// Створіть об’єкт TextAnnotation
TextAnnotation textAnnotation = new TextAnnotation();
textAnnotation.setName("Annotation Name");
textAnnotation.setRect(rect);
textAnnotation.setFlags(flags);
textAnnotation.setHorizontalAlignment(HorizontalAlignment.CENTER);

// встановити вміст, який буде відображатися всередині Анотації
textAnnotation.contents("Hello World...");
// Установіть значок для анотації
textAnnotation.icon(TextIcon.KEY);

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

// стандартний стан об’єкта анотації
textAnnotation.setState(AnnotationState.COMPLETED);
		        
// створити ListArray з TextAnnotation
List<TextAnnotation> annotations = new ArrayList<>();

// додати створену вище TextAnnotation до екземпляра List
annotations.add(textAnnotation);

// викликати метод для додавання анотації до файлу PDF
AsposeResponse response = pdfApi.postPageTextAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Полілінійні анотації

Cloud SDK також надає ті самі можливості для додавання анотацій Polyline до документа PDF. Нижче наведено кроки та фрагмент коду для виконання цієї вимоги.

  • По-перше, нам потрібно створити екземпляр PdfApi і завантажити вихідний файл у хмарне сховище.
  • Створіть ArrayList типу Point, який визначає точки, у яких будуть намальовані полілінії.
  • Наступним кроком є створення об’єкта PolyLineAnnotation, де ми визначаємо прямокутну область і передаємо Points ListArray методу setVertices(…).
  • Щоб установити внутрішній колір, скористайтеся методом setInteriorColor(…) і передайте Color екземпляр як аргумент.
  • Тепер викличте методи beginStyle(…) і endingStyle(…), щоб визначити початковий і кінцевий стиль анотації. Ці методи приймають значення з переліку LineEnding як аргументи.
  • Нарешті, викличте метод postPagePolyLineAnnotations(…) класу PdfApi, щоб відобразити анотацію всередині документа PDF.
// Отримайте ClientID і ClientSecret з https://dashboard.aspose.cloud/
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
				
// екземпляр createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// вхідний документ PDF
String name = "PdfWithTable.pdf";	        
			    
// Завантажте файл з локальної системи
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// завантажити файл у хмарне сховище
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// номер сторінки для вхідного файлу, куди буде додано анотацію
int pageNumber = 1;

// прямокутна область для анотації
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(600.)
    .URX(200.)
    .URY(650.);

// вкажіть вершини для анотації
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);

// створити об’єкт PolyLineAnnotation
PolyLineAnnotation annotation = new PolyLineAnnotation();
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");

// створити кольоровий об'єкт
Color color = new Color();
color.setA(255);
color.setR(120);
color.setG(140);
color.setB(130);

// встановити внутрішній колір для екземпляра анотації
annotation.setInteriorColor(color);
		        
annotation.setVertices(vertices);
// вкажіть початковий стиль для анотації
annotation.startingStyle(LineEnding.OPENARROW);

// встановити стиль закінчення для анотації
annotation.endingStyle(LineEnding.SQUARE);

List<PolyLineAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
		        
// викликати метод для додавання анотації Polyline до першої сторінки документа
AsposeResponse response = pdfApi.postPagePolyLineAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Звивисті анотації

Окремий клас під назвою SquigglyAnnotation використовується для додавання анотації Squiggly до документа PDF. Наведений нижче фрагмент коду можна використовувати для додавання анотацій Squiggly до PDF-файлу, доступного в хмарному сховищі.

// Отримайте ClientID і ClientSecret з https://dashboard.aspose.cloud/
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
				
// екземпляр createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// вхідний документ PDF
String name = "PdfWithTable.pdf";	        
			    
// Завантажте файл з локальної системи
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// завантажити файл у хмарне сховище
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// номер сторінки для вхідного файлу, куди буде додано анотацію
int pageNumber = 1;

// прямокутна область для анотації
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(600.)
    .URX(200.)
    .URY(650.);

// вкажіть вершини для анотації
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);

// створити об’єкт 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");
		        
// створити кольоровий об'єкт
Color color = new Color();
color.setA(155);
color.setR(120);
color.setG(140);
color.setB(130);

// встановити внутрішній колір для екземпляра анотації
annotation.color(color);

// встановити точки анотації		        
annotation.setQuadPoints(vertices);

List<SquigglyAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
		        
// виклик методу для додавання Squiggly Annotation до першої сторінки документа
AsposeResponse response = pdfApi.postPageSquigglyAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Анотації до вкладених файлів

Щоб додати анотацію до вкладеного файлу, спробуйте використати наведений нижче фрагмент коду. Опис коду такий самий, як і в наведених вище розділах, за винятком того, що для виконання цієї вимоги потрібно використовувати об’єкт FileAttachmentAnnotation.

// Отримайте ClientID і ClientSecret з https://dashboard.aspose.cloud/
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
				
// екземпляр createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// вхідний документ PDF
String name = "PdfWithTable.pdf";	        
			    
// Завантажте файл з локальної системи
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// завантажити файл у хмарне сховище
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// номер сторінки для вхідного файлу, куди буде додано анотацію
int pageNumber = 1;

// прямокутна область для анотації
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(100.)
    .URX(200.)
    .URY(200.);

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

// створити об’єкт 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");
		        
// шлях до файлу вкладення
annotation.setFilePath("images.jpeg");
// ім'я вкладеного файлу
annotation.setFileName("images.jpeg");

// створити екземпляр List для FileAttachment
List<FileAttachmentAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
		        
// викликати метод для додавання анотації FileAttachment до першої сторінки документа
AsposeResponse response = pdfApi.postPageFileAttachmentAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Висновок

У цій статті ми обговорили кроки та відповідні деталі для додавання анотацій тексту, ламаної лінії, хвилястих і вкладених файлів до документа PDF. Оскільки наші Cloud SDK є відкритими, ви можете завантажити повний вихідний код із GitHub. Репозиторій також містить інші корисні приклади того, як використовувати Java Cloud SDK для створення та обробки існуючих PDF-файлів. Якщо у вас виникнуть пов’язані запитання, зв’яжіться з нами через безкоштовні форуми підтримки клієнтів.

Схожі статті

Ми настійно рекомендуємо вам переглянути наступні статті: