Этот блог является продолжением нашего предыдущего блога, в котором мы осветили некоторые интересные функции 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, использованные в приведенном выше примере, можно загрузить по следующим ссылкам.
Аннотация полилинии
Аннотации Polyline используются для ручного рисования полилиний на странице. Они могут содержать любое количество сторон, определяемых вершинами полилинии. Аннотации 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=\\\"https://www.w3.org/1999/xhtml/\\\" xmlns:xfa=\\\"https://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 } ] }]"
Волнистая аннотация
Волнистые или зубчатые подчеркнутые аннотации помогают выделить информацию в документе. Их можно добавить с помощью 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 SDK.
Текстовые аннотации
Ниже приведены шаги по добавлению текстовых аннотаций в PDF-документы.
- Первый шаг — создание объекта PdfApi, в котором мы предоставляем ClientID и ClientSecret в качестве аргументов.
- Затем мы создаем объект Rectangle, куда добавляется аннотация.
- LLX — X-координата нижнего левого угла.
- LLY - Y - координата нижнего левого угла.
- URY - X - координата верхнего правого угла.
- URY - Y - координата верхнего правого угла.
- Создайте объект TextAnnotation, где мы определяем выравнивание с помощью метода setHorizontalAlignment(..).Установите субъект с помощью метода setSubject(…), состояние по умолчанию с помощью метода setState(…) и т. д.
- Затем создайте объект ArrayList<> типа TextAnnotation и добавьте к нему созданный выше объект TextAnnotation.
- Наконец, вызовите postPageTextAnnotations(…), куда мы передаем в качестве аргументов имя входного PDF-файла, PageNumber и Annotations 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.);
// Создать список массива флагов аннотаций
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 текстовой аннотации
List<TextAnnotation> annotations = new ArrayList<>();
// добавить созданный выше экземпляр TextAnnotation в список
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 в качестве аргумента.
- Теперь вызовите методы startingStyle(…) и 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);
// вызовите метод для добавления аннотации полилинии на первую страницу документа
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 на первую страницу документа
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");
// создать экземпляр списка FileAttachment
List<FileAttachmentAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
// вызовите метод для добавления аннотации FileAttachment на первую страницу документа
AsposeResponse response = pdfApi.postPageFileAttachmentAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
Заключение
В этой статье мы обсудили шаги и сопутствующие детали для добавления аннотаций Text, Polyline, Squiggly и FileAttachment в документ PDF. Поскольку наши Cloud SDK имеют открытый исходный код, вы можете загрузить полный исходный код с GitHub. Репозиторий также содержит другие полезные примеры того, как использовать Java Cloud SDK для создания и управления существующими файлами PDF. Если у вас есть какие-либо связанные вопросы, пожалуйста, свяжитесь с нами через бесплатные форумы поддержки клиентов.
Похожие статьи
Мы настоятельно рекомендуем вам ознакомиться со следующими статьями: