PDF-documentmanipulatie in Java

Aspose.PDF FOSS voor Java biedt een rijke set API’s voor het manipuleren van bestaande PDF-documenten — splitsen, samenvoegen, pagina’s extraheren, paginabereiken invoegen en de inhoud binnen pagina’s herschalen. Deze mogelijkheden zijn geconcentreerd in PdfFileEditor en de bijbehorende klassen ContentsResizeParameters en ContentsResizeValue.

PdfFileEditor: Kernpaginabewerkingen

De PdfFileEditor klasse is de centrale faciliteit voor hoog-niveau PDF-bestandsbewerkingen. Het biedt methoden voor het samenvoegen van meerdere PDF-bestanden, het extraheren van paginagroepen, het splitsen van een document in afzonderlijke pagina’s, en het invoegen van pagina’s van het ene document in het andere op een specifieke positie.

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");

Belangrijke methoden omvatten:

  • concatenate(inputFiles, outputFile) — voegt meerdere documenten in volgorde samen
  • extract(inputFile, startPage, endPage, outputFile) — exporteert een aaneengesloten bereik
  • extract(inputFile, pageNumbers, outputFile) — exporteert een niet-aaneengesloten set
  • splitToPages(inputFile) — splitst in één ByteArrayOutputStream per pagina
  • insert(inputFile, insertPosition, portFile, startPage, endPage, outputFile) — voegt een bereik in
  • delete(inputFile, pageNumbers, outputFile) — verwijdert specifieke pagina’s
  • append(inputFile, portFile, startPage, endPage, outputFile) — voegt een paginabereik toe

Voor grote bestanden schakelt setUseDiskBuffer(true) de interne opslag van heap naar schijf over.

Inhoudsformaat aanpassen met ContentsResizeParameters

PdfFileEditor.resizeContents() past het inhoud aan binnen de bestaande paginagrensen. Elke marge — links, rechts, boven, onder — en de breedte en hoogte van de inhoud worden opgegeven als ContentsResizeValue-instanties, gecreëerd via de fabrieksmethoden ContentsResizeValue.percents(value) of 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");
}

De zes-argumenten constructor voor ContentsResizeParameters accepteert waarden in de volgorde: leftMargin, contentsWidth, rightMargin, topMargin, contentsHeight, bottomMargin. Alle zes moeten optellen tot 100% bij gebruik van op procenten gebaseerde waarden, of overeenkomen met de paginadimensies bij gebruik van absolute puntwaarden.

Specifieke pagina’s herschalen

Wanneer alleen een deel van de pagina’s herschaling vereist, richt de overload die een integer-array met paginanummers accepteert zich op die pagina’s terwijl de rest ongewijzigd blijft:

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() en isPercent() maken het mogelijk om de opgeslagen waarde te inspecteren en te bepalen of deze een percentage of een absoluut puntenaantal vertegenwoordigt.

Boekje- en N-Up-indeling

PdfFileEditor bevat makeBooklet() voor het ordenen van pagina’s in een dubbelzijdige boekjevolgorde en makeNUp() voor het rangschikken van meerdere pagina’s per vel. Beide methoden accepteren bestandspaden of 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: Zoomcontrole per pagina

PdfPageEditor richt zich op individuele paginaparameters zoals het zoomniveau. setZoom() accepteert een float-vermenigvuldiger die de initiële vergroting bepaalt wanneer het document in een viewer wordt geopend:

PdfPageEditor pageEditor = new PdfPageEditor();
pageEditor.bindPdf("input.pdf");
pageEditor.setZoom(1.5f);
pageEditor.save("zoomed.pdf");

Waarden van 0.0 of negatief worden afgewezen — getZoom() retourneert 1.0 in die gevallen. Dit maakt PdfPageEditor geschikt voor het voorbereiden van documenten die bij een specifieke vergroting moeten worden geopend voor toegankelijkheids- of kioskweergavegebruik.

Aan de slag

Voeg de Maven-dependency toe en importeer het facades-pakket:

<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 voor Java is MIT-gelicentieerd en beschikbaar op https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.

Commercieel gebruik is toegestaan onder de MIT-licentievoorwaarden. Als uw project enterprise-grade ondersteuning, uitgebreide formatdekking of cloudintegratie vereist, is de Aspose.PDF — Enterprise Product Family een aparte commerciële aanbieding.

Gerelateerde bronnen