Manipulace s PDF dokumenty v Java

Aspose.PDF FOSS pro Java poskytuje bohatou sadu API pro manipulaci s existujícími PDF dokumenty — rozdělování, spojování, extrahování stránek, vkládání rozsahů stránek a změnu velikosti obsahu na stránkách. Tyto možnosti jsou soustředěny v PdfFileEditor a jeho doprovodných třídách ContentsResizeParameters a ContentsResizeValue.

PdfFileEditor: Základní operace s stránkami

Třída PdfFileEditor je centrálním prostředkem pro vysoceúrovňové operace s PDF soubory. Poskytuje metody pro spojování několika PDF souborů, extrahování podmnožin stránek, rozdělení dokumentu na jednotlivé stránky a vkládání stránek z jednoho dokumentu do druhého na konkrétní pozici.

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

Klíčové metody zahrnují:

  • concatenate(inputFiles, outputFile) — sloučí více dokumentů v pořadí
  • extract(inputFile, startPage, endPage, outputFile) — exportuje souvislý rozsah
  • extract(inputFile, pageNumbers, outputFile) — exportuje nespojitý soubor
  • splitToPages(inputFile) — rozdělí na jeden ByteArrayOutputStream na stránku
  • insert(inputFile, insertPosition, portFile, startPage, endPage, outputFile) — vloží rozsah
  • delete(inputFile, pageNumbers, outputFile) — odstraňuje konkrétní stránky
  • append(inputFile, portFile, startPage, endPage, outputFile) — přidá rozsah stránek

Pro velké soubory setUseDiskBuffer(true) přepíná vnitřní úložiště z haldy na disk.

Změna velikosti obsahu pomocí ContentsResizeParameters

PdfFileEditor.resizeContents() upravuje obsah v rámci existujících okrajů stránky. Každý okraj — levý, pravý, horní, spodní — a šířka a výška obsahu jsou specifikovány jako instance ContentsResizeValue, vytvořené pomocí továrních metod ContentsResizeValue.percents(value) nebo 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");
}

Šestiarý konstruktor pro ContentsResizeParameters přijímá hodnoty v pořadí: leftMargin, contentsWidth, rightMargin, topMargin, contentsHeight, bottomMargin. Všechny šest musí dohromady tvořit 100% při použití hodnot v procentech, nebo odpovídat rozměrům stránky při použití absolutních bodových hodnot.

Změna velikosti konkrétních stránek

Když pouze podmnožina stránek vyžaduje změnu velikosti, přetížení, které přijímá pole celých čísel s čísly stránek, cílí na tyto stránky a zbytek ponechá nezměněný:

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() a isPercent() umožňují prohlédnout uloženou hodnotu a zjistit, zda představuje procento nebo absolutní počet bodů.

Rozvržení brožury a N-Up

PdfFileEditor zahrnuje makeBooklet() pro uspořádání stránek ve dvoustranném pořadí brožury a makeNUp() pro rozkládání více stránek na list. Obě metody přijímají cesty k souborům nebo proudy:

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: Ovládání přiblížení na úrovni stránky

PdfPageEditor cílí na jednotlivé vlastnosti stránky, jako je úroveň přiblížení. setZoom() přijímá číselný násobek typu float, který řídí počáteční zvětšení při otevření dokumentu v prohlížeči:

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

Hodnoty 0.0 nebo záporné jsou odmítnuty — getZoom() vrací 1.0 v těchto případech. To činí PdfPageEditor vhodným pro přípravu dokumentů, které musí být otevřeny při konkrétním zvětšení pro účely přístupnosti nebo kioskového zobrazení.

Začínáme

Přidejte závislost Maven a importujte balíček facades:

<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 pro Java je licencováno pod MIT a je k dispozici na https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.

Související zdroje