Manipulasi Dokumen PDF di Java

Aspose.PDF FOSS for Java provides a rich set of APIs for manipulating existing PDF dokumen pemisahan, concatenating, ekstraksi halaman, memasukkan rentang halaman dan Mengubah ukuran konten dalam halaman. Kemampuan ini terkonsentrasi pada PdfFileEditor dan para sahabatnya, ContentsResizeParameters dan (b) ContentsResizeValue.

PdfFileEditor: Operasi Halaman Utama

Pengelolaan PdfFileEditor class adalah fasilitas pusat untuk operasi file PDF tingkat tinggi. Ini menyediakan metode untuk mengikat beberapa file PDF, mengekstrak subset halaman, membagi dokumen menjadi halaman-halaman individu, dan memasukkan halaman dari satu dokumen ke posisi tertentu.

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

Metode utama meliputi:

  • concatenate(inputFiles, outputFile) menggabungkan beberapa dokumen dalam urutan yang sama
  • extract(inputFile, startPage, endPage, outputFile) mengekspor berbagai produk yang bersambung
  • extract(inputFile, pageNumbers, outputFile) mengekspor satu set yang tidak bersambung
  • splitToPages(inputFile) terpecah menjadi satu ByteArrayOutputStream per halaman
  • insert(inputFile, insertPosition, portFile, startPage, endPage, outputFile) memasukkan rentang
  • delete(inputFile, pageNumbers, outputFile) menghapus halaman tertentu
  • append(inputFile, portFile, startPage, endPage, outputFile) menambahkan rentang halaman

Untuk file besar, setUseDiskBuffer(true) beralih penyimpanan internal dari heap ke disk.

Isi Mengubah Ukuran dengan KontenParameter Pengukuran

PdfFileEditor.resizeContents() menyesuaikan konten dalam batas halaman yang ada. Setiap margin kiri, kanan, atas, bawah ?? dan lebar konten dan tinggi adalah ditentukan sebagai berikut: ContentsResizeValue contoh, dibangun dengan metode pabrik ContentsResizeValue.percents(value) atau: 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");
}

Konstruktor enam argumen untuk ContentsResizeParameters menerima nilai dalam urutan: kiri Margin, isi lebar, kananMargin , atas Margen, konten Tinggi, bawah Marge. Keenam harus jumlah 100% ketika menggunakan nilai berbasis persentase, atau sesuai dengan halaman. dimensi saat menggunakan nilai titik absolut.

Mengubah ukuran halaman tertentu

Ketika hanya subset halaman yang membutuhkan perubahan ukuran, overload yang menerima array bilangan bulat nomor halaman menargetkan halaman-halaman tersebut sambil meninggalkan sisanya tidak berubah:

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() dan (b) isPercent() memungkinkan pemeriksaan yang disimpan nilai dan menentukan apakah itu mewakili persentase atau hitungan poin absolut.

Buku dan Tata Letak N-Up

PdfFileEditor mencakup: makeBooklet() untuk memaksakan halaman dalam urutan buku berlapis dua sisi dan (b) makeNUp() untuk menata beberapa halaman per lembar. Kedua metode menerima jalur file atau aliran:

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: Per-page Zoom Control

PdfPageEditor menargetkan sifat halaman individu seperti tingkat zoom. setZoom() menerima pemulikar float yang mengontrol pembesaran awal ketika dokumen dibuka dalam pemirsa:

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

Nilai dari 0.0 atau negatif ditolak getZoom() pengembalian 1.0 dalam kasus-kasus itu. Ini membuat PdfPageEditor cocok untuk menyiapkan dokumen yang harus dibuka pada waktu tertentu. pembesaran untuk aksesibilitas atau kasus penggunaan kios tampilan.

Memulai

Tambahkan ketergantungan Maven dan impor paket fasad:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-pdf</artifactId>
  <version>0.1.0-alpha</version>
</dependency>
import org.aspose.pdf.*;
import org.aspose.pdf.facades.*;

Aspose.PDF FOSS for Java is MIT-licensed and available at https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.

Sumber Daya terkait