Pendahuluan
Aspose.PDF FOSS untuk Java adalah perpustakaan Java berlisensi MIT untuk membuat dan memanipulasi dokumen PDF. Ini tersedia di GitHub di bawah lisensi MIT dan tidak memerlukan kunci API atau perjanjian komersial. Perpustakaan ini menyediakan 527 kelas yang mencakup seluruh spesifikasi PDF mulai dari struktur dokumen hingga anotasi, formulir interaktif, perenderan halaman, dan operasi kriptografi.
Perpustakaan ini dibangun di sekitar kelas Document, yang merupakan titik masuk utama untuk semua operasi PDF. Membuat dokumen baru, mengakses halaman melalui PageCollection, membaca metadata melalui DocumentInfo, atau menavigasi katalog melalui getCatalog() dan getTrailer() — semuanya dimulai dengan instance Document.
Mulai Cepat
Tambahkan dependensi Maven ke pom.xml Anda:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-pdf-foss</artifactId>
<version>26.9.0</version>
</dependency>Perpustakaan mengatur semua kelas publik API ke dalam tiga paket. Tambahkan deklarasi paket ini ke file sumber Java mana pun yang menggunakan API:
// Core API — Document, Page, Annotation, Form, etc.
import org.aspose.pdf.*;
// Annotation subclasses
import org.aspose.pdf.annotations.*;
// Facade classes — PdfFileEditor, PdfAnnotationEditor, etc.
import org.aspose.pdf.facades.*;
Aspose.PDF FOSS untuk Java memerlukan Java 11 atau lebih baru. Kode sumber dan pelacak masalah tersedia di https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.
Memulai
Buat dan simpan dokumen minimal untuk memverifikasi pengaturan:
try (Document doc = new Document()) {
PageCollection pages = doc.getPages();
Page page = pages.add();
doc.save("output.pdf");
System.out.println("Pages: " + pages.getCount());
}
Konstruktor kelas Document menerima jalur file atau aliran untuk mengakses file yang ada, atau dapat dipanggil tanpa argumen untuk membuat dokumen kosong. Halaman dikelola melalui PageCollection, yang dapat diakses melalui Document.getPages(). Setiap Page mengekspos geometri-nya melalui getMediaBox(), getCropBox(), dan getRotate(), serta memberikan akses ke sumber daya, operator konten, dan anotasi.
try (Document doc = new Document()) {
PageCollection pages = doc.getPages();
Page page = pages.add();
// page.getMediaBox() -> Rectangle with width/height
// page.getAnnotations() -> AnnotationCollection
doc.save("output.pdf");
}
Kelas PdfFileEditor menyediakan concatenate() untuk menggabungkan beberapa dokumen dan resizeContents() dengan ContentsResizeParameters untuk menyesuaikan tata letak konten dalam batas halaman yang ada.
Anotasi
Aspose.PDF FOSS untuk Java mengimplementasikan hierarki anotasi PDF lengkap yang berakar pada kelas abstrak Annotation. Jenis anotasi konkret meliputi WidgetAnnotation untuk kontrol formulir, FreeTextAnnotation untuk penjelasan teks, HighlightAnnotation dan UnderlineAnnotation untuk markup, serta CircleAnnotation dan CaretAnnotation untuk catatan grafis.
Setiap anotasi terkait dengan Page dan Rectangle yang menentukan lokasinya. Properti visual dikendalikan melalui AppearanceCharacteristics, yang menyediakan metode setBorder(), setBackground(), setRotate(), dan setCaption(). Anotasi ditambahkan ke halaman melalui page.getAnnotations().add(annotation).
try (Document doc = new Document()) {
PageCollection pages = doc.getPages();
Page page = pages.add();
WidgetAnnotation w = new WidgetAnnotation(page, new Rectangle(0, 0, 100, 50));
w.getCharacteristics().setBorder(Color.fromRgb(1, 0, 0));
w.getCharacteristics().setCaption("Submit");
page.getAnnotations().add(w);
doc.save("annotated.pdf");
}
Bidang Formulir Interaktif
Kelas Form, yang dapat diakses melalui Document.getForm(), mengelola semua bidang AcroForm. Perpustakaan menyediakan ButtonField, CheckboxField, RadioButtonField, TextBoxField, ComboBoxField, dan ListBoxField untuk membangun formulir yang dapat diisi. FormEditor adalah kelas fasad untuk bekerja dengan bidang formulir dalam dokumen yang terikat.
Grup tombol radio dibuat dengan RadioButtonField, yang menerima sebuah halaman dan mendukung addOption() untuk menambahkan pilihan yang dapat dipilih, masing-masing terkait dengan Rectangle untuk lokasi visualnya. Metode setValue() secara programatik memilih sebuah opsi.
try (Document doc = new Document()) {
PageCollection pages = doc.getPages();
Page page = pages.add();
RadioButtonField radio = new RadioButtonField(page);
radio.setPartialName("answer");
radio.addOption("Yes", new Rectangle(50, 50, 70, 70));
radio.addOption("No", new Rectangle(50, 80, 70, 100));
doc.getForm().add(radio, 1);
radio.setValue("Yes");
doc.save("form.pdf");
}
Keamanan: Enkripsi AES
Kelas AESCipher mengimplementasikan enkripsi AES dalam mode CBC untuk mengenkripsi dan mendekripsi array byte data yang disematkan dalam dokumen PDF. AESCipher.encrypt(key, data) mengembalikan ciphertext yang terenkripsi, dan AESCipher.decrypt(key, data) mengambil plaintext asli. Untuk kontrol IV yang eksplisit, encryptWithIV(key, iv, plaintext) dan decryptWithIV(key, iv, cipherText) menyediakan operasi deterministik.
PDF/A Validasi Kepatuhan
Perpustakaan menyertakan ActionRules dan ActionFixes untuk validasi dan koreksi kepatuhan PDF/A. ActionRules.validate() memeriksa tindakan terlarang pada entri katalog, halaman, dan widget. ActionFixes menyediakan metode seperti removeCatalogAA(), removePageAA(), dan removeWidgetAA() untuk memperbaiki kamus tindakan yang tidak mematuhi. Demikian pula, AnnotationRules dan AnnotationFixes menangani kepatuhan anotasi.
Artefak: Header, Footer, dan Watermark
Kelas Artifact memodelkan dekorasi halaman seperti header, footer, watermark, dan gambar latar belakang. ArtifactCollection, yang dapat diakses melalui sumber daya halaman, memungkinkan enumerasi dan penghapusan objek artefak. Mengiterasi page.getArtifacts() dan memanggil ArtifactCollection.delete(artifact) menghapus artefak tertentu tanpa memodifikasi aliran konten dokumen secara langsung.
Rendering Halaman
Kelas BmpDevice merender halaman PDF secara langsung ke file gambar BMP menggunakan process(page, outputPath). Ini berguna untuk pembuatan thumbnail, pratinjau dokumen, atau pipeline pemrosesan berbasis gambar.