PDF-dokumentmanipulering i Java

Aspose.PDF FOSS för Java erbjuder ett rikt urval av API:er för att manipulera befintliga PDF-dokument — dela, sammanfoga, extrahera sidor, infoga sidintervall och ändra storlek på innehåll inom sidor. Dessa funktioner koncentreras i PdfFileEditor och dess kompagnonkläser ContentsResizeParameters och ContentsResizeValue.

PdfFileEditor: Grundläggande sidoperationer

Klassen PdfFileEditor är den centrala anläggningen för hög nivå PDF-filoperationer. Den tillhandahåller metoder för att sammanfoga flera PDF-filer, extrahera sidundergrupper, dela ett dokument i enskilda sidor och infoga sidor från ett dokument i ett annat på en specifik 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");

Viktiga metoder inkluderar:

  • concatenate(inputFiles, outputFile) — slår samman flera dokument i ordning
  • extract(inputFile, startPage, endPage, outputFile) — exporterar ett sammanhängande intervall
  • extract(inputFile, pageNumbers, outputFile) — exporterar en icke-sammanhängande uppsättning
  • splitToPages(inputFile) — delar upp i en ByteArrayOutputStream per sida
  • insert(inputFile, insertPosition, portFile, startPage, endPage, outputFile) — infogar ett intervall
  • delete(inputFile, pageNumbers, outputFile) — tar bort specifika sidor
  • append(inputFile, portFile, startPage, endPage, outputFile) — lägger till ett sidintervall

För stora filer byter setUseDiskBuffer(true) intern lagring från heap till disk.

Innehållsändring med ContentsResizeParameters

PdfFileEditor.resizeContents() justerar innehållet inom befintliga sidgränser. Varje marginal — vänster, höger, topp, botten — samt innehållets bredd och höjd anges som ContentsResizeValue-instanser, konstruerade via fabrikmetoderna ContentsResizeValue.percents(value) eller 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");
}

Den sex-argumentskonstruktorn för ContentsResizeParameters accepterar värden i följande ordning: leftMargin, contentsWidth, rightMargin, topMargin, contentsHeight, bottomMargin. Alla sex måste summeras till 100% när procentbaserade värden används, eller matcha sidans dimensioner när absoluta punktvärden används.

Ändra storlek på specifika sidor

När endast ett delmängd av sidorna behöver storleksändring, riktar den överlagrade metoden som accepterar en heltalsarray med sidnummer in på dessa sidor och lämnar resten oförändrade:

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() och isPercent() möjliggör inspektion av det lagrade värdet och att avgöra om det representerar en procentsats eller ett absolut antal punkter.

Broschyr- och N-Up-layout

PdfFileEditor inkluderar makeBooklet() för att arrangera sidor i tvåsidig broschyrordning och makeNUp() för att mosa flera sidor per ark. Båda metoderna accepterar filsökvägar eller strömmar:

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: Zoomkontroll per sida

PdfPageEditor riktar in sig på individuella sidegenskaper såsom zoomnivå. setZoom() accepterar en flyttalsmultiplikator som styr den initiala förstoringen när dokumentet öppnas i en visare:

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

Värden av 0.0 eller negativa avvisas — getZoom() returnerar 1.0 i dessa fall. Detta gör PdfPageEditor lämplig för att förbereda dokument som måste öppnas med en specifik förstoring för tillgänglighets- eller kioskskärmsbruk.

Komma igång

Lägg till Maven-beroendet och importera facades-paketet:

<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 är MIT-licensierad och finns tillgänglig på https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.

Relaterade resurser