Pengantar
Aspose.PDF FOSS untuk Python adalah perpustakaan open-source baru untuk bekerja dengan dokumen PDF dari kode Python. Ini dirilis di bawah lisensi MIT dan diimplementasikan sepenuhnya dalam Python — parser PDF, penulis, rasterizer halaman, dan rutin enkripsi merupakan bagian dari paket itu sendiri, dengan dependensi yang diperlukan terbatas pada cryptography dan asn1crypto. Ekstra opsional menambahkan dukungan gambar berbasis Pillow, dekoding font WOFF2 berbasis Brotli, dan pembentukan teks kompleks berbasis HarfBuzz.
Perpustakaan ini diatur di sekitar kelas Document, yang memuat PDF dari jalur, byte, atau aliran biner dan mengekspose halamannya melalui document.pages, sebuah PageCollection yang mendukung iterasi, pengindeksan, dan pemotongan. Dari situ, API mencakup penambahan teks dan gambar ke halaman, membaca dan memodifikasi anotasi, membuat dan mengisi bidang AcroForm, mengenkripsi dan mendekripsi dokumen, serta mengekstrak teks dan lampiran — operasi yang diperlukan untuk membuat PDF baru atau bekerja dengan yang sudah ada.
Rilis ini ditujukan bagi pengembang yang membutuhkan pemrosesan PDF di dalam basis kode Python tanpa lisensi komersial: pembuatan laporan dan faktur, pipeline ingest dokumen, otomatisasi pengisian formulir, dan layanan yang perlu merender halaman PDF menjadi gambar atau mengekstrak teks untuk pengindeksan lanjutan. Proyek ini saat ini berada dalam fase alpha, sehingga API dan cakupan fitur dapat berkembang sebelum rilis stabil pertama. Python 3.11 atau yang lebih baru diperlukan.
Apa yang Disertakan
Pembuatan dan Pemuatan Dokumen
PdfDocument() membuat PDF kosong; PdfDocument(source, password=..., limits=...) memuat yang sudah ada dari jalur, byte mentah, atau aliran biner, dan setara dengan memanggil PdfDocument().load_from(source, ...). Kedua‑nya akan menimbulkan error bila file tidak ditemukan, data bukan PDF, atau kata sandi hilang alih‑alih mengembalikan dokumen kosong. PdfDocument adalah manajer konteks, sehingga sumber daya dilepaskan secara otomatis ketika blok with berakhir.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text("Generated by Aspose.PDF FOSS", x=72, y=720, font_size=14)
document.save("report.pdf")
with Document("report.pdf") as document:
print(f"Pages: {document.page_count}")
print(f"PDF version: {document.version}")
Menambahkan Teks dan Gambar
Page.add_text menempatkan teks Standard‑14 atau Unicode yang tersemat pada posisi x/y dengan font_size yang diberikan; argumen font dapat berupa FontDescriptor, byte font mentah, atau jalur ke font TrueType/OpenType untuk Unicode di luar enkoding Standard‑14. Page.add_image menempatkan XObject gambar mentah, JPEG, atau PNG pada halaman pada posisi dan ukuran yang ditentukan.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text(
"Quarterly Summary",
x=72,
y=740,
font_size=16,
)
page.add_image(
"chart.png",
x=72,
y=420,
width=300,
height=200,
)
document.save("summary.pdf")
Anotasi
Setiap Page mengekspos anotasinya melalui page.annotations, sebuah AnnotationCollection. add(subtype, rect, contents, title, appearance_normal, properties) membuat dan menyisipkan anotasi dengan subtipe standar seperti Square, Circle, Line, Highlight, atau FreeText, mengembalikan sebuah Annotation. Memanggil generate_appearance() pada anotasi yang dikembalikan mensintesis aliran tampilan dari geometri dan propertinya.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
annotation = page.annotations.add(
"Square",
(100, 600, 300, 680),
"Needs review",
properties={"C": [1, 0, 0]},
)
annotation.generate_appearance()
document.save("annotated.pdf")
Bidang Formulir
document.form mengembalikan Form dokumen, yang secara langsung membuat bidang AcroForm: add_text_field(), add_checkbox(), add_radio_group(), add_list_box(), add_combo_box(), dan add_push_button() masing-masing menerima nama bidang, sebuah Page atau indeks halaman, dan sebuah persegi penempatan, mengembalikan sebuah Field. Menetapkan field.value memperbarui nilai bidang, dan form.flatten() mengubah tampilan setiap bidang menjadi konten halaman statis.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
form = document.form
field = form.add_text_field(
"customer_name",
page,
(72, 700, 300, 720),
)
field.value = "Jane Doe"
form.flatten()
document.save("form.pdf")
Enkripsi
Document.encrypt(user_password, owner_password, permissions) melindungi sebuah dokumen dengan kata sandi pengguna, kata sandi pemilik, dan bitmask izin, mengembalikan Document yang sama untuk chaining. Document.decrypt(password) membalikkan operasi tersebut, dan properti is_encrypted melaporkan keadaan saat ini. Memuat kembali dokumen terenkripsi memerlukan pengiriman password= ke konstruktor atau ke load_from().
from aspose_pdf import Document
with Document("report.pdf") as document:
document.encrypt(user_password="user-pass", owner_password="owner-pass", permissions=0)
document.save("encrypted.pdf")
with Document("encrypted.pdf", password="user-pass") as document:
print(f"Encrypted: {document.is_encrypted}")
Ekstraksi Teks
PdfExtractor mengikat ke sumber dengan bind_pdf(), kemudian extract_text() menjelajah halaman dokumen. get_text() mengembalikan semua teks yang diekstrak sekaligus, sementara has_next_page_text() dan get_next_page_text() mengiterasi hasil per halaman. PdfExtractor juga merupakan manajer konteks.
from aspose_pdf import PdfExtractor
with PdfExtractor() as extractor:
extractor.bind_pdf("report.pdf")
extractor.extract_text()
while extractor.has_next_page_text():
print(extractor.get_next_page_text())
Panduan Cepat
git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text(
"Hello from Aspose.PDF FOSS!",
x=72,
y=720,
font_size=18,
)
document.save("hello.pdf")
with Document("hello.pdf") as document:
print(f"Pages: {document.page_count}")
print(f"PDF version: {document.version}")
Format yang Didukung
| Format | Ekstensi | Baca | Tulis |
|---|---|---|---|
| ✓ | ✓ | ||
| PNG | .png | — | ✓ |
| TIFF | .tiff | — | ✓ |
PDF adalah format input dan output inti perpustakaan, dibaca melalui Document/load_from() dan ditulis melalui Document.save. PNG dan TIFF adalah output perenderan halaman yang dihasilkan oleh Page.render, Page.save_as_image, dan Document.save_page_as_image.
Sumber Terbuka & Lisensi
Aspose.PDF FOSS untuk Python didistribusikan di bawah lisensi MIT, dengan kode sumber lengkap tersedia di github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python. Lisensi tersebut memperbolehkan penggunaan komersial, modifikasi, dan redistribusi tanpa perjanjian terpisah.