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ý rozsahextract(inputFile, pageNumbers, outputFile)— exportuje nespojitý souborsplitToPages(inputFile)— rozdělí na jedenByteArrayOutputStreamna stránkuinsert(inputFile, insertPosition, portFile, startPage, endPage, outputFile)— vloží rozsahdelete(inputFile, pageNumbers, outputFile)— odstraňuje konkrétní stránkyappend(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.