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 sorrendben
  • extract(inputFile, startPage, endPage, outputFile) — egy folytonos tartományt exportál
  • extract(inputFile, pageNumbers, outputFile) — exportál egy nem összefüggő készletet
  • splitToPages(inputFile) — feloszt egy ByteArrayOutputStream-t oldalanként
  • insert(inputFile, insertPosition, portFile, startPage, endPage, outputFile) — beszúr egy tartományt
  • delete(inputFile, pageNumbers, outputFile) — eltávolít meghatározott oldalakat
  • append(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.

Kapcsolódó erőforrások