1. Продукты
  2.   Aspose.PDF
  3.   Aspose.PDF FOSS for Java

Aspose.PDF FOSS for Java

Создавайте и изменяйте PDF‑документы из Java — с аннотациями, полями форм, манипуляцией страницами и поддержкой PDF/A. Лицензия MIT.

Бесплатная библиотека Java с лицензией MIT для создания и манипуляции PDF-файлов.

Aspose.PDF FOSS for Java — это библиотека Java с лицензией MIT для создания и работы с PDF‑документами. Она предоставляет всесторонний класс Document в качестве центральной точки входа, а также полное покрытие аннотаций, интерактивных полей форм, манипуляций со страницами, метаданных и проверки соответствия PDF/A.

Библиотека предоставляет 527 классов, охватывающих полную спецификацию PDF: структуру документа через Document, Page и PageCollection; аннотации через иерархию Annotation (включая WidgetAnnotation, FreeTextAnnotation и HighlightAnnotation); интерактивные формы с Form, ButtonField, CheckboxField и RadioButtonField; рендеринг страниц через BmpDevice; и проверку соответствия PDF/A через ActionRules и ActionFixes. Шифрование предоставляется через AESCipher в режиме CBC.

Добавьте Aspose.PDF FOSS в ваш Maven‑проект, используя groupId org.aspose и artifactId aspose-pdf. Библиотека требует Java 11 или новее и полностью лицензирована под MIT. Для корпоративных функций и поддержки см. Aspose.PDF for Java — Enterprise Product.

Структура документа и управление страницами

  • Document API: Используйте класс Document для создания новых PDF-документов. Доступ к существующим документам можно получить через конструкторы Document(filePath) или Document(stream).
  • Управление страницами: Добавлять, получать доступ и изменять страницы через PageCollection. Каждый Page выставляет на поверхность MediaBox, CropBox , ротацию, ресурсы и операторы контента.
  • Метаданные: Читать и писать метаданных документа через DocumentInfo и XmpMetadata.
  • ** Структура PDF:** Доступ к базовым объектам PDF через getParser(), getCatalog() и getTrailer().
  • Встроенные файлы: Управляйте коллекциями встроенных файлов с помощью getEmbeddedFiles().

Общие сценарии обработки документов

  • Подготовка PDF: Создание документов программируемым способом путем создания Document и заполнения страниц.
  • ** Анализ документов:** Доступ к существующим файлам для проверки метаданных или перечисления полей формы.
  • Подготовка страниц: Переразмер, вращение или переустройство страницы с помощью PdfFileEditor и API Page.
  • Барчевые рабочие процессы: Применять последовательные преобразования в нескольких документах на стороне сервера.

Аннотации и поля формы

  • Хиерархия аннотаций: Абстрактный класс Annotation является основой для всех аннот; конкретные типы включают в себя WidgetAnnotation, FreeTextAnnotation,HighlightAnnotation и UnderlineAnnotation.
  • Интерактивные формы: Доступ к документу через Document.getForm() для перечисления или создания экземпляров ButtonField, CheckboxField и RadioButtonField.
  • ** Виджетный внешний вид:** Управляйте визуальными свойствами через AppearanceCharacteristics цвет границы, фон, вращение и заголовки.
  • Редактирование формы: Используйте FormEditor и FormElement для манипулирования формами более высокого уровня.

Обзор документов и сотрудничество

  • Анотации на отметке: Добавить в документы подчеркивания, подчёркивание или свободные текстовые аннотация для обзора рабочих процессов.
  • Интерактивные формы: Создавать заполняемые документы с помощью радиокубок, выберите ящики и нажмите кнопки для захвата данных.
  • Исключение данных формы: Читать представленные значения полей форм для проводки на стороне сервера.
  • Соблюдение требований архивного режима: Подтверждение и исправление документов для долгосрочного архивирования с использованием ActionRules и ActionFixes.

Операции по обеспечению безопасности и содержанию

  • ** Шифрование AES:** Зашифровать и расшифривать массивы байтов данных с помощью AESCipher в режиме CBC (AESCipher.encrypt(key, data) и AESCipher.decrypt(key, data)).
  • Управление артефактами: Определять и управлять заголовками, футерами, водяными знаками и фоновыми изображениями через API Artifact и ArtifactCollection.
  • ** Размер содержания:** Настроить макет содержимого страницы с помощью PdfFileEditor.resizeContents() и ContentsResizeParameters.
  • Валидация соответствия: Валидировать правила аннотации и действия по стандартам PDF/A с использованием AnnotationRules и ActionRules.

Случаи использования безопасности документов

  • Зашифрованные полезные нагрузки: Используйте AESCipher для шифрования разделов данных, встроенных в потоки документов.
  • Защита документов: Применять настройки безопасности для контроля доступа в рабочем процессе соответствия.
  • ** Водоотметка:** Выявление и управление Artifact объектами, представляющими водовые знаки и украшения страниц.
  • Следует архивным стандартам: Запустите ActionFixes и AnnotationFixes, чтобы существующие документы соответствовали архивному стандарту PDF/A-1b.

Создать документ с аннотацией виджетов

Создайте новый документ, добавьте страницу и прикрепите аннотацию с стилем.

try (Document doc = new Document()) ```java
try (Document doc = new Document()) {
    Page page = doc.getPages().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("output.pdf");
}

Создать форму с помощью радиокубок

Добавить группу радио кнопок в форму документа и выберите значение программированным образом.

try (Document doc = new Document()) {
    Page page = doc.getPages().add();
    RadioButtonField radio = new RadioButtonField(page);
    radio.setPartialName("choice");
    radio.addOption("Option1", new Rectangle(50, 50, 70, 70));
    radio.addOption("Option2", new Rectangle(50, 80, 70, 100));
    doc.getForm().add(radio, 1);
    radio.setValue("Option2");
    doc.save("form.pdf");
}

Проверка размеров страниц документа

Доступ к существующему документу и чтение размеров медиа-кробки первой страницы.

try (Document doc = new Document("input.pdf")) {
    double width = doc.getPages().get(1).getMediaBox().getWidth();
    double height = doc.getPages().get(1).getMediaBox().getHeight();
    System.out.println("Page size: " + width + " x " + height);
}
  

Ресурсы поддержки и обучения

 Русский