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 samenextract(inputFile, startPage, endPage, outputFile)— exporteert een aaneengesloten bereikextract(inputFile, pageNumbers, outputFile)— exporteert een niet-aaneengesloten setsplitToPages(inputFile)— splitst in éénByteArrayOutputStreamper paginainsert(inputFile, insertPosition, portFile, startPage, endPage, outputFile)— voegt een bereik indelete(inputFile, pageNumbers, outputFile)— verwijdert specifieke pagina’sappend(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.