PDF-Dokumentenmanipulation in Java
Aspose.PDF FOSS für Java bietet einen umfangreichen Satz von APIs zur Manipulation vorhandener PDF-Dokumente — Aufteilen, Zusammenführen, Extrahieren von Seiten, Einfügen von Seitenbereichen und Ändern der Größe von Inhalten innerhalb von Seiten. Diese Fähigkeiten sind in PdfFileEditor und den zugehörigen Klassen ContentsResizeParameters und ContentsResizeValue konzentriert.
PdfFileEditor: Kernseitenoperationen
Die Klasse PdfFileEditor ist die zentrale Einrichtung für PDF-Dateioperationen auf hoher Ebene. Sie bietet Methoden zum Zusammenführen mehrerer PDF-Dateien, zum Extrahieren von Seitenauszügen, zum Aufteilen eines Dokuments in einzelne Seiten und zum Einfügen von Seiten aus einem Dokument in ein anderes an einer bestimmten Position.
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");
Wichtige Methoden umfassen:
concatenate(inputFiles, outputFile)— fügt mehrere Dokumente in Reihenfolge zusammenextract(inputFile, startPage, endPage, outputFile)— exportiert einen zusammenhängenden Bereichextract(inputFile, pageNumbers, outputFile)— exportiert ein nicht zusammenhängendes SetsplitToPages(inputFile)— teilt in einByteArrayOutputStreampro Seiteinsert(inputFile, insertPosition, portFile, startPage, endPage, outputFile)— fügt einen Bereich eindelete(inputFile, pageNumbers, outputFile)— entfernt bestimmte Seitenappend(inputFile, portFile, startPage, endPage, outputFile)— fügt einen Seitenbereich an
Bei großen Dateien wechselt setUseDiskBuffer(true) den internen Speicher vom Heap auf die Festplatte.
Inhaltsgrößenanpassung mit ContentsResizeParameters
PdfFileEditor.resizeContents() passt den Inhalt innerhalb bestehender Seitenränder an. Jeder Rand — links, rechts, oben, unten — sowie die Inhaltsbreite und -höhe werden als ContentsResizeValue-Instanzen angegeben, die über die Fabrikmethoden ContentsResizeValue.percents(value) oder ContentsResizeValue.units(value) erstellt werden.
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");
}
Der sechsstufige Konstruktor für ContentsResizeParameters akzeptiert Werte in der Reihenfolge: leftMargin, contentsWidth, rightMargin, topMargin, contentsHeight, bottomMargin. Alle sechs müssen 100% ergeben, wenn prozentbasierte Werte verwendet werden, oder den Seitenmaßen entsprechen, wenn absolute Punktwerte verwendet werden.
Bestimmte Seiten skalieren
Wenn nur ein Teil der Seiten eine Größenanpassung benötigt, greift die Überladung, die ein Integer-Array von Seitenzahlen akzeptiert, diese Seiten an, während der Rest unverändert bleibt:
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() und isPercent() ermöglichen das Inspektieren des gespeicherten Wertes und die Bestimmung, ob er einen Prozentsatz oder eine absolute Punktzahl darstellt.
Broschüren- und N-Up-Layout
PdfFileEditor enthält makeBooklet() zum Anordnen von Seiten in zweiseitiger Broschürenreihenfolge und makeNUp() zum Kacheln mehrerer Seiten pro Blatt. Beide Methoden akzeptieren Dateipfade oder Streams:
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: Zoom-Steuerung pro Seite
PdfPageEditor richtet sich an einzelne Seiteneigenschaften wie den Zoom-Level. setZoom() akzeptiert einen Float-Multiplikator, der die anfängliche Vergrößerung steuert, wenn das Dokument in einem Betrachter geöffnet wird:
PdfPageEditor pageEditor = new PdfPageEditor();
pageEditor.bindPdf("input.pdf");
pageEditor.setZoom(1.5f);
pageEditor.save("zoomed.pdf");
Werte von 0.0 oder negative werden abgelehnt — getZoom() gibt in diesen Fällen 1.0 zurück. Das macht PdfPageEditor geeignet für die Erstellung von Dokumenten, die bei einer bestimmten Vergrößerung für Barrierefreiheit oder Kiosk-Anzeigefälle geöffnet werden müssen.
Erste Schritte
Fügen Sie die Maven-Abhängigkeit hinzu und importieren Sie das facades-Paket:
<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 für Java ist MIT-lizenziert und verfügbar unter https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.