Pendahuluan
document.py, modul yang mendefinisikan Aspose.PDF FOSS untuk kelas Document milik Python, menggambarkannya sebagai kelas yang “membungkus mesin PDF asli.” Secara konkret, mesin itu adalah aspose_pdf.engine.simple_pdf.SimplePdf: Document.load_from membuat instance SimplePdf, dan setiap operasi tingkat dokumen — menyimpan, mengoptimalkan, memperbaiki, mengenkripsi — didelegasikan kepadanya. Hal yang sama berlaku untuk rendering: Page.render dan Document.render_page keduanya memanggil aspose_pdf.engine.rasterizer.
Sebagian besar kode aplikasi tidak pernah perlu melihat lebih jauh dari Document dan Page. Namun aspose_pdf.engine adalah paket Python biasa yang dapat diimpor, dan beberapa komponen di bawah fasad berguna secara terpisah: rasterizer yang mengubah halaman menjadi piksel, codec filter-stream yang mengompresi dan mendekompresi aliran konten PDF, serta utilitas enkripsi yang mengimplementasikan algoritma AES-CBC dan RC4 yang digunakan oleh pengelola keamanan PDF. Berbeda dengan paket utama, submodul aspose_pdf.engine tidak diekspor kembali dari aspose_pdf tingkat atas — satu pengecualian adalah RasterizedPage, yang dijembatani melalui aspose_pdf.visualization — sehingga semua di bawahnya diimpor dengan jalur bertitik lengkapnya, misalnya from aspose_pdf.engine.filters import StreamDecoder.
Aspose.PDF FOSS untuk Python adalah paket Python, aspose-pdf-foss-for-python, dirilis di bawah lisensi MIT, memerlukan Python 3.11 atau lebih baru. Nama modul tingkat atasnya adalah aspose_pdf. Paket inti hanya bergantung pada cryptography dan asn1crypto; tambahan opsional menambahkan decoding gambar berbasis Pillow, dukungan font WOFF2 berbasis Brotli, dan tata letak teks kompleks berbasis HarfBuzz.
Fitur Utama
Merender Halaman dengan Mesin Rasterisasi
Document.render_page(page_index, dpi=..., scale=..., background=..., antialias=...) dan pasangan Page.render-nya keduanya mengembalikan sebuah RasterizedPage — raster RGB terpaket yang dihasilkan oleh rasterizer mesin. RasterizedPage mengekspos width, height, dan byte mentah pixels, plus get_pixel() untuk pencarian satu-piksel, to_png() / to_tiff() untuk byte terenkode dalam memori, dan save() untuk menulis file .png atau .tif/.tiff secara langsung. Bekerja dengan objek di memori — bukan hanya menyimpan ke disk — berguna ketika pemanggil ingin memeriksa atau mengubah piksel sebelum memutuskan apakah akan menyimpannya.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text("Rendered by the engine", x=72, y=700, font_size=18)
raster = document.render_page(0, dpi=150)
print(raster.width, raster.height)
corner = raster.get_pixel(0, 0)
print("top-left pixel:", corner)
with open("page-0.png", "wb") as handle:
handle.write(raster.to_png())
raster.save("page-0.tiff")
Mesin Filter Aliran
Konten PDF dan aliran objek dikompresi dengan filter bernama seperti FlateDecode dan LZWDecode. aspose_pdf.engine.filters.StreamEncoder.encode(data, filters, decode_parms=None) dan StreamDecoder.decode(data, filters, decode_parms, *, limits=None, max_output_bytes=None) mengimplementasikan sisi enkode dan dekode dari rantai filter tersebut — codec yang sama yang digunakan mesin secara internal saat menulis dan membaca aliran dokumen. Keduanya menerima satu nama filter atau daftar untuk filter berantai, dan StreamDecoder.decode() memunculkan PdfValidationException pada nama filter yang tidak dikenali alih-alih mengembalikan byte yang salah secara diam-diam.
from aspose_pdf.engine.filters import StreamDecoder, StreamEncoder
raw = b"Sample content-stream payload.\n" * 40
compressed = StreamEncoder.encode(raw, "FlateDecode")
restored = StreamDecoder.decode(compressed, "FlateDecode", None)
assert restored == raw
print(f"{len(raw)} bytes -> {len(compressed)} bytes with FlateDecode")
Mesin Enkripsi
aspose_pdf.engine.encryption.EncryptionUtils adalah kelas utilitas metode statis yang dipanggil oleh SimplePdf untuk setiap operasi terkait enkripsi: Document.encrypt, decrypt(), dan change_passwords() semuanya berujung pada pemanggilan EncryptionUtils di balik layar. Metodenya mengimplementasikan AES-CBC dan enkripsi RC4 secara langsung (encrypt_aes_cbc, decrypt_aes_cbc, encrypt_rc4, decrypt_rc4), derivasi kunci untuk revisi penangan keamanan standar PDF (compute_owner_key_v4, compute_user_key_v4, compute_user_owner_keys_v6), dan generate_file_id() untuk ID acak 16-byte yang diperlukan dokumen baru.
from aspose_pdf.engine.encryption import EncryptionUtils
key = b"0123456789ABCDEF" # 16 bytes -> AES-128
ciphertext = EncryptionUtils.encrypt_aes_cbc(key, b"Reviewer notes: approved")
plaintext = EncryptionUtils.decrypt_aes_cbc(key, ciphertext)
assert plaintext == b"Reviewer notes: approved"
file_id = EncryptionUtils.generate_file_id()
print(file_id.hex())
Mulai Cepat
Pasang paket, lalu render halaman langsung dari lapisan mesin dalam satu skrip.
asposefoss/pdf is not yet published — build from source until it ships. See the project README for build instructions.from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text("Engine-rendered page", x=72, y=740, font_size=20)
raster = document.render_page(0, dpi=150)
raster.save("engine-render.png")
document.save("engine-quickstart.pdf")
print("Saved engine-quickstart.pdf and engine-render.png")
Format yang Didukung
| Format | Ekstensi | Baca | Tulis |
|---|---|---|---|
| Ya | Ya | ||
| TIFF | tiff | - | Ya |
Membaca dan menulis PDF adalah Aspose.PDF FOSS untuk fungsi inti Python — pasangan mesin Document/SimplePdf memuat dan menulis dokumen PDF pada setiap jalur kode dalam posting ini. Document.render_page, Page.render, dan RasterizedPage.to_png() / to_tiff() juga menghasilkan output raster PNG dan TIFF; ini adalah output rasterisasi halaman bukan format pemuatan dokumen.
Sumber Terbuka & Lisensi
Aspose.PDF FOSS untuk Python dirilis di bawah lisensi MIT: tidak ada pembatasan penggunaan, tidak ada biaya runtime, dan tidak ada persyaratan pendaftaran untuk penggunaan komersial atau pribadi. Kode sumber dihosting di github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python, dan paket dipublikasikan di PyPI sebagai aspose-pdf-foss-for-python.