Маніпулювання PDF-документами у Java
Aspose.PDF FOSS для Java надає багатий набір API для маніпулювання існуючими PDF-документами — розділення, об’єднання, витягування сторінок, вставку діапазонів сторінок та зміну розміру вмісту на сторінках. Ці можливості зосереджені в PdfFileEditor та його супутніх класах ContentsResizeParameters і ContentsResizeValue.
PdfFileEditor: Основні операції зі сторінками
Клас PdfFileEditor є центральним засобом для високорівневих операцій з PDF-файлами. Він надає методи для об’єднання кількох PDF-файлів, витягування підмножин сторінок, розділення документа на окремі сторінки та вставки сторінок з одного документа в інший у вказаній позиції.
PdfFileEditor editor = new PdfFileEditor();
// Concatenate two documents into one
editor.concatenate("first.pdf", "second.pdf", "combined.pdf");
// Extract pages 2 through 5 to a new file
editor.extract("source.pdf", 2, 5, "extracted.pdf");
Ключові методи включають:
concatenate(inputFiles, outputFile)— об’єднує кілька документів у порядкуextract(inputFile, startPage, endPage, outputFile)— експортує безперервний діапазонextract(inputFile, pageNumbers, outputFile)— експортує непослідовний набірsplitToPages(inputFile)— розбиває на одинByteArrayOutputStreamна сторінкуinsert(inputFile, insertPosition, portFile, startPage, endPage, outputFile)— вставляє діапазонdelete(inputFile, pageNumbers, outputFile)— видаляє конкретні сторінкиappend(inputFile, portFile, startPage, endPage, outputFile)— додає діапазон сторінок
Для великих файлів setUseDiskBuffer(true) перемикає внутрішнє сховище з heap на диск.
Зміна розміру вмісту за допомогою ContentsResizeParameters
PdfFileEditor.resizeContents() коригує вміст в межах існуючих меж сторінки. Кожен відступ — лівий, правий, верхній, нижній — а також ширина та висота вмісту задаються як екземпляри ContentsResizeValue, створені за допомогою фабричних методів ContentsResizeValue.percents(value) або ContentsResizeValue.units(value).
try (Document doc = new Document("input.pdf")) {
PdfFileEditor editor = new PdfFileEditor();
ContentsResizeParameters params = new ContentsResizeParameters(
ContentsResizeValue.percents(10), // left margin
ContentsResizeValue.percents(80), // content width
ContentsResizeValue.percents(10), // right margin
ContentsResizeValue.percents(10), // top margin
ContentsResizeValue.percents(80), // content height
ContentsResizeValue.percents(10) // bottom margin
);
editor.resizeContents(doc, params);
doc.save("resized.pdf");
}
Конструктор з шістьма аргументами для ContentsResizeParameters приймає значення у такому порядку: leftMargin, contentsWidth, rightMargin, topMargin, contentsHeight, bottomMargin. Усі шість повинні в сумі дорівнювати 100% при використанні значень у відсотках або відповідати розмірам сторінки при використанні абсолютних значень у пунктах.
Зміна розмірів окремих сторінок
Коли лише підмножина сторінок потребує зміни розмірів, перевантаження, яке приймає масив цілих чисел номерів сторінок, орієнтується на ці сторінки, залишаючи інші без змін:
PdfFileEditor editor = new PdfFileEditor();
ContentsResizeParameters params = new ContentsResizeParameters(
ContentsResizeValue.units(28), // left margin in points
ContentsResizeValue.units(540), // content width
ContentsResizeValue.units(28), // right margin
ContentsResizeValue.units(28), // top margin
ContentsResizeValue.units(786), // content height
ContentsResizeValue.units(28) // bottom margin
);
// Only resize pages 1 and 3
editor.resizeContents(doc, new int[]{1, 3}, params);
ContentsResizeValue.getValue() і isPercent() дозволяють переглянути збережене значення та визначити, чи представляє воно відсоток, чи абсолютну кількість пунктів.
Буклет і N-Up розкладка
PdfFileEditor включає makeBooklet() для розміщення сторінок у двосторонньому порядку буклета та makeNUp() для укладання декількох сторінок на аркуші. Обидва методи приймають шляхи до файлів або потоки:
PdfFileEditor editor = new PdfFileEditor();
// Print as a folded booklet
editor.makeBooklet("input.pdf", "booklet.pdf");
// Tile 2 columns × 3 rows per sheet
editor.makeNUp("input.pdf", "nup.pdf", 2, 3);
PdfPageEditor: Управління масштабом для кожної сторінки
PdfPageEditor орієнтується на окремі властивості сторінки, такі як рівень масштабування. setZoom() приймає множник з плаваючою комою, який контролює початкове збільшення під час відкриття документа у переглядачі:
PdfPageEditor pageEditor = new PdfPageEditor();
pageEditor.bindPdf("input.pdf");
pageEditor.setZoom(1.5f);
pageEditor.save("zoomed.pdf");
Значення 0.0 або від’ємні відхиляються — getZoom() повертає 1.0 у таких випадках. Це робить PdfPageEditor придатним для підготовки документів, які мають відкриватися з певним збільшенням для потреб доступності або використання в кіоскових дисплеях.
Початок роботи
Додайте залежність Maven і імпортуйте пакет facades:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-pdf-foss</artifactId>
<version>26.8.0</version>
</dependency>import org.aspose.pdf.*;
import org.aspose.pdf.facades.*;
Aspose.PDF FOSS для Java має ліцензію MIT і доступний за адресою https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.