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 zusammen
  • extract(inputFile, startPage, endPage, outputFile) — exportiert einen zusammenhängenden Bereich
  • extract(inputFile, pageNumbers, outputFile) — exportiert ein nicht zusammenhängendes Set
  • splitToPages(inputFile) — teilt in ein ByteArrayOutputStream pro Seite
  • insert(inputFile, insertPosition, portFile, startPage, endPage, outputFile) — fügt einen Bereich ein
  • delete(inputFile, pageNumbers, outputFile) — entfernt bestimmte Seiten
  • append(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.

Verwandte Ressourcen