Manipulacja dokumentami PDF w Java
Aspose.PDF FOSS dla Java zapewnia bogaty zestaw interfejsów API do manipulacji istniejącymi dokumentami PDF — dzielenia, łączenia, wyodrębniania stron, wstawiania zakresów stron oraz zmiany rozmiaru zawartości na stronach. Te możliwości skoncentrowane są w PdfFileEditor oraz w towarzyszących klasach ContentsResizeParameters i ContentsResizeValue.
PdfFileEditor: Podstawowe operacje na stronach
Klasa PdfFileEditor jest centralnym narzędziem do operacji na plikach PDF wysokiego poziomu. Oferuje metody łączenia wielu plików PDF, wyodrębniania podzbiorów stron, dzielenia dokumentu na pojedyncze strony oraz wstawiania stron z jednego dokumentu do drugiego w określonym miejscu.
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");
Kluczowe metody obejmują:
concatenate(inputFiles, outputFile)— scala wiele dokumentów w kolejnościextract(inputFile, startPage, endPage, outputFile)— eksportuje spójny zakresextract(inputFile, pageNumbers, outputFile)— eksportuje nieciągły zestawsplitToPages(inputFile)— dzieli na jedenByteArrayOutputStreamna stronęinsert(inputFile, insertPosition, portFile, startPage, endPage, outputFile)— wstawia zakresdelete(inputFile, pageNumbers, outputFile)— usuwa określone stronyappend(inputFile, portFile, startPage, endPage, outputFile)— dołącza zakres stron
W przypadku dużych plików, setUseDiskBuffer(true) przełącza wewnętrzne przechowywanie z sterty na dysk.
Zmiana rozmiaru treści przy użyciu ContentsResizeParameters
PdfFileEditor.resizeContents() dostosowuje treść w obrębie istniejących granic strony. Każdy margines — lewy, prawy, górny, dolny — oraz szerokość i wysokość treści są określane jako instancje ContentsResizeValue, tworzone za pomocą metod fabrycznych ContentsResizeValue.percents(value) lub 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");
}
Konstruktor z sześcioma argumentami dla ContentsResizeParameters przyjmuje wartości w kolejności: leftMargin, contentsWidth, rightMargin, topMargin, contentsHeight, bottomMargin. Wszystkie sześć muszą sumować się do 100% przy użyciu wartości procentowych lub odpowiadać wymiarom strony przy użyciu wartości punktowych.
Zmiana rozmiaru konkretnych stron
Gdy tylko podzbiór stron wymaga zmiany rozmiaru, przeciążenie przyjmujące tablicę liczb całkowitych z numerami stron kieruje się do tych stron, pozostawiając pozostałe niezmienione:
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() i isPercent() umożliwiają sprawdzenie przechowywanej wartości i określenie, czy reprezentuje ona procent, czy bezwzględną liczbę punktów.
Układ broszury i N-Up
PdfFileEditor zawiera makeBooklet() do nakładania stron w dwustronnym porządku broszury oraz makeNUp() do układania wielu stron na jednej kartce. Obie metody przyjmują ścieżki plików lub strumienie:
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: Kontrola przybliżenia per strona
PdfPageEditor celuje w właściwości poszczególnych stron, takie jak poziom przybliżenia. setZoom() przyjmuje mnożnik zmiennoprzecinkowy, który kontroluje początkowe powiększenie, gdy dokument jest otwierany w przeglądarce:
PdfPageEditor pageEditor = new PdfPageEditor();
pageEditor.bindPdf("input.pdf");
pageEditor.setZoom(1.5f);
pageEditor.save("zoomed.pdf");
Wartości 0.0 lub ujemne są odrzucane — getZoom() zwraca 1.0 w tych przypadkach. To sprawia, że PdfPageEditor jest odpowiednie do przygotowywania dokumentów, które muszą otwierać się w określonym powiększeniu dla potrzeb dostępności lub wyświetlania w kiosku.
Rozpoczęcie
Dodaj zależność Maven i zaimportuj pakiet 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 dla Java jest na licencji MIT i dostępny pod adresem https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.