Lapisan Facades di Aspose.PDF FOSS untuk Java

Aspose.PDF FOSS untuk Java mencakup lapisan facades — sekumpulan kelas tingkat tinggi yang berfokus pada tugas, yang menyediakan operasi terarah pada dokumen PDF tanpa memerlukan navigasi seluruh model objek PDF. Setiap kelas facade mengikuti pola yang sama: mengikat dokumen, melakukan operasi, menyimpan hasil.

Semua kelas facade berada di paket org.aspose.pdf.facades:

import org.aspose.pdf.facades.*;

PdfAnnotationEditor: Flatten dan Hapus Anotasi

PdfAnnotationEditor menyediakan operasi untuk mengelola anotasi secara massal: flattening mereka ke dalam konten halaman, menghapus semua anotasi, atau menghapus tipe anotasi tertentu berdasarkan nama.

try (PdfAnnotationEditor editor = new PdfAnnotationEditor()) {
    editor.bindPdf("annotated.pdf");
    // Flatten all annotations into the page content stream
    editor.flattenAnnotations();
    editor.save("flat.pdf");
}

Overload deleteAnnotations(annotationType) menerima string tipe anotasi seperti "Highlight" atau "Widget" untuk menghapus hanya anotasi dari tipe tersebut. countAnnotations() mengembalikan total jumlah anotasi di semua halaman.

PdfBookmarkEditor: Buat dan Hapus Bookmark

PdfBookmarkEditor mengelola pohon garis besar PDF (bookmark). Ini menyediakan metode untuk membuat bookmark baru dengan createBookmarks(), menghapus semua bookmark dengan deleteBookmarks(), dan menghapus bookmark berdasarkan judul dengan deleteBookmarkByTitle().

try (PdfBookmarkEditor bookmarkEditor = new PdfBookmarkEditor()) {
    bookmarkEditor.bindPdf("input.pdf");
    // Remove all bookmarks from the document
    bookmarkEditor.deleteBookmarks();
    bookmarkEditor.save("no-bookmarks.pdf");
}

Overload bindPdf(document) menerima objek Document secara langsung, memungkinkan penggunaan dalam pipeline di mana dokumen sudah dimuat ke memori.

PdfContentEditor: Penggantian Teks

PdfContentEditor mendukung penggantian teks yang ditargetkan dalam aliran konten PDF. replaceText(searchText, replaceText) menggantikan semua kemunculan sebuah string di seluruh dokumen; replaceText(searchText, pageNumber, replaceText) membatasi penggantian hanya pada satu halaman.

try (PdfContentEditor contentEditor = new PdfContentEditor()) {
    contentEditor.bindPdf("template.pdf");
    contentEditor.replaceText("{{CompanyName}}", "Acme Corp");
    contentEditor.save("output.pdf");
}

TextReplaceOptions mengontrol apakah penggantian harus mempertahankan font dan ukuran asli atau mewarisi properti teks dari konten sekitarnya. getStamps(pageNumber) mengembalikan objek StampInfo untuk semua stempel pada sebuah halaman, dan deleteStampById() menghapus stempel tertentu berdasarkan identifier-nya.

PdfFileSecurity: Enkripsi dan Izin

PdfFileSecurity mengelola keamanan pada tingkat dokumen termasuk enkripsi, dekripsi, dan izin akses. Varian konstruktor menerima jalur file, aliran, atau instance Document yang ada bersama tujuan output.

DocumentPrivilege mewakili izin akses untuk dokumen yang terenkripsi. Gunakan DocumentPrivilege.getForbidAll() untuk menolak semua operasi pengguna, atau DocumentPrivilege.getAllowAll() untuk memberikan akses penuh.

try (PdfFileSecurity security = new PdfFileSecurity("input.pdf", "secured.pdf")) {
    DocumentPrivilege privilege = DocumentPrivilege.getForbidAll();
    privilege.setAllowPrint(true);
    security.encryptFile("userPass", "ownerPass", privilege, KeySize.x256);
}

decryptFile(ownerPassword) menghapus enkripsi ketika kata sandi pemilik diketahui. Enum Algorithm menyediakan keluarga algoritma RC4 dan AES; KeySize menentukan panjang kunci.

PdfFileStamp: Menambahkan Stempel dan Nomor Halaman

PdfFileStamp menambahkan stempel teks dan gambar ke halaman PDF dan dapat secara otomatis menghasilkan nomor halaman yang diformat. Stempel ditempatkan menggunakan penempatan berbasis koordinat pada setiap halaman.

try (PdfFileStamp stamp = new PdfFileStamp("input.pdf", "stamped.pdf")) {
    // Add formatted page numbers to all pages
    stamp.addPageNumber("Page #", PageNumberingStyle.NumeralsArabic,
        0, 0, 0, 20);
}

PdfExtractor: Ekstraksi Teks dan Gambar

PdfExtractor menyediakan API berbasis pull untuk mengekstrak teks dan gambar dari dokumen PDF. Setelah mengikat sebuah dokumen, panggil extractText() untuk memicu ekstraksi teks, kemudian iterasi dengan hasNextPageText() dan getNextPageText():

try (PdfExtractor extractor = new PdfExtractor()) {
    extractor.bindPdf("document.pdf");
    extractor.extractText();
    while (extractor.hasNextPageText()) {
        String pageText = extractor.getNextPageText();
        // Collect extracted page content
    }
}

Untuk ekstraksi gambar, extractImage() memicu ekstraksi dan hasNextImage() / getNextImage(outputStream) mengiterasi gambar yang diekstrak. Metode getPassword() dan setPassword() mendukung dokumen terenkripsi.

Memulai

Tambahkan dependensi Maven:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-pdf-foss</artifactId>
  <version>26.8.0</version>
</dependency>

Semua kelas fasad memerlukan Java 11 atau yang lebih baru. Aspose.PDF FOSS untuk Java berlisensi MIT dan tersedia di https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.

Sumber Daya Terkait