PDF-dokumentum manipulálása Java-ban
Aspose.PDF FOSS Java számára gazdag API-készletet biztosít a meglévő PDF-dokumentumok manipulálásához — szétválasztás, összefűzés, oldalak kinyerése, oldaltartományok beszúrása és a tartalom átméretezése az oldalakon. Ezek a képességek a PdfFileEditor és a hozzá kapcsolódó ContentsResizeParameters és ContentsResizeValue osztályokban koncentrálódnak.
PdfFileEditor: Alapvető oldalműveletek
A PdfFileEditor osztály a központi eszköz a magas szintű PDF-fájl műveletekhez. Metódusokat biztosít több PDF-fájl összefűzéséhez, oldalak részhalmazainak kinyeréséhez, egy dokumentum egyes oldalakra bontásához, valamint oldalak egy dokumentumból egy másikba történő beszúrásához egy adott pozíción.
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");
A kulcsfontosságú metódusok:
concatenate(inputFiles, outputFile)— több dokumentumot egyesít sorrendbenextract(inputFile, startPage, endPage, outputFile)— egy folytonos tartományt exportálextract(inputFile, pageNumbers, outputFile)— exportál egy nem összefüggő készletetsplitToPages(inputFile)— feloszt egyByteArrayOutputStream-t oldalankéntinsert(inputFile, insertPosition, portFile, startPage, endPage, outputFile)— beszúr egy tartománytdelete(inputFile, pageNumbers, outputFile)— eltávolít meghatározott oldalakatappend(inputFile, portFile, startPage, endPage, outputFile)— hozzáfűz egy oldaltartományt
Nagy fájlok esetén a setUseDiskBuffer(true) a belső tárolást a heap-ről lemezre váltja.
Tartalom átméretezése a ContentsResizeParameters segítségével
PdfFileEditor.resizeContents() a meglévő oldalhatárokon belül állítja be a tartalmat. Minden margó — bal, jobb, felső, alsó — és a tartalom szélessége és magassága ContentsResizeValue példányokként van megadva, amelyeket a ContentsResizeValue.percents(value) vagy a ContentsResizeValue.units(value) gyári metódusok hoznak létre.
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");
}
A ContentsResizeParameters hat argumentumos konstruktora az alábbi sorrendben fogadja az értékeket: leftMargin, contentsWidth, rightMargin, topMargin, contentsHeight, bottomMargin. A hat értéknek 100%-ot kell összeadnia százalékos értékek használata esetén, vagy egyeznie kell az oldal méreteivel abszolút pontértékek esetén.
Kijelölt oldalak átméretezése
Ha csak egy oldalcsoportot kell átméretezni, akkor a teljes számú oldalazonosítókat tartalmazó egész tömböt elfogadó overload a megadott oldalakat célozza meg, míg a többit változatlanul hagyja:
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() és isPercent() lehetővé teszi a tárolt érték megtekintését és annak meghatározását, hogy százalékot vagy abszolút pontszámot képvisel-e.
Füzet és N-Up elrendezés
PdfFileEditor tartalmazza a makeBooklet() funkciót a kétoldalas füzetrendben történő oldalak elrendezéséhez, valamint a makeNUp() funkciót több oldal egy lapra helyezéséhez. Mindkét metódus elfogad fájlutakat vagy adatfolyamokat:
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: Oldalankénti nagyítás vezérlése
PdfPageEditor egyedi oldal tulajdonságokat céloz, például a nagyítási szintet. setZoom() egy float szorzót fogad, amely a dokumentum megnyitásakor a nézőben a kezdeti nagyítást szabályozza:
PdfPageEditor pageEditor = new PdfPageEditor();
pageEditor.bindPdf("input.pdf");
pageEditor.setZoom(1.5f);
pageEditor.save("zoomed.pdf");
A 0.0 értékek vagy a negatív értékek elutasításra kerülnek — getZoom() ezekben az esetekben 1.0-t ad vissza. Ez teszi a PdfPageEditor-t megfelelővé olyan dokumentumok előkészítéséhez, amelyeknek egy meghatározott nagyítással kell megnyílniuk a hozzáférhetőség vagy a kioszk kijelző esetén.
Kezdő lépések
Adja hozzá a Maven függőséget, és importálja a facades csomagot:
<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 a Java számára MIT licencű, és elérhető itt: https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.