Aspose.PDF FOSS for Python Fitur
Aspose.PDF FOSS untuk Python Fitur
Aspose.PDF FOSS for Python adalah perpustakaan pure-Python untuk membuat, membuka, memodifikasi, dan menyimpan dokumen PDF. Halaman ini meninjau area kemampuan utama dan kelas yang berfungsi sebagai titik masuk mereka. Setiap area dibahas secara mendalam pada halaman panduan pengembangnya masing-masing.
Manajemen Dokumen dan Halaman
Document adalah objek akar untuk setiap operasi. Buatlah tanpa argumen untuk memulai dokumen baru yang kosong, atau panggil load_from() untuk membaca yang sudah ada dari jalur, byte, atau aliran. document.pages mengekspos PageCollection yang dapat diubah, dan Page.add_text menempatkan teks yang diposisikan pada halaman.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
page.add_text("Hello from Aspose.PDF FOSS!", x=72, y=720, font_size=18)
document.save("hello.pdf")Ekstraksi Teks dan Pencarian
PdfExtractor terikat pada dokumen dan menarik teks per halaman. bind_pdf() membuka sumber, extract_text() melakukan ekstraksi, dan get_text() mengembalikan hasil yang terkumpul.
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()Untuk pencarian dan penggantian yang diposisikan per fragmen, TextFragmentAbsorber mengekspos objek TextFragment yang cocok dengan text_search_options yang mengontrol sensitivitas huruf dan pencocokan ekspresi reguler.
Rendering Halaman ke Gambar
Document.save_page_as_image menyajikan satu halaman langsung ke file PNG atau TIFF dengan DPI yang dapat dikonfigurasi. Untuk akses tingkat lebih rendah, Page.render mengembalikan RasterizedPage dengan data piksel mentah melalui get_pixel() dan pixels.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)Formulir dan Bidang Interaktif
AcroForm fields are managed through Document.form, a Form facade. Form.add_text_field() (dan setara checkbox, radio, list, serta combo box) membuat bidang baru yang terikat pada sebuah halaman dan persegi panjang widget, mengembalikan Field. Form.fields menampilkan semua bidang yang saat ini ada pada dokumen.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))
for field in document.form.fields:
print(field.name, field.field_type)
document.save("form.pdf")Keamanan, Enkripsi, dan Tanda Tangan
Document.encrypt melindungi dokumen dengan kata sandi pengguna (diperlukan untuk membuka) dan kata sandi pemilik (diperlukan untuk mengubah izin); decrypt() dan change_passwords() mengelola perlindungan pada dokumen yang sudah terbuka. is_encrypted melaporkan keadaan saat ini.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.encrypt(user_password="secret", owner_password="owner-secret")
document.save("encrypted.pdf")Verifikasi tanda tangan digital ditangani oleh PdfSignature.validate, yang mengembalikan ValidationResult yang menjelaskan status kepercayaan dan pencabutan, dan SigningUtils menyediakan helper sertifikat dan penandatanganan PKCS#7/CAdES.
PDF/A dan PDF/UA Kepatuhan
Document.validate_pdfa menjalankan pemeriksaan kepatuhan heuristik PDF/A dan mengembalikan PdfAValidationResult; convert_to_pdfa() berusaha memperbaiki dokumen ke tingkat tersebut. validate_pdfua() dan auto_tag() menyediakan pemeriksaan aksesibilitas yang setara serta penandaan pohon struktur otomatis untuk PDF/UA.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
result = document.validate_pdfa("1b")
if not result.is_valid:
document.convert_to_pdfa("1b")
document.auto_tag()
document.save("compliant.pdf")Tips dan Praktik Terbaik
- Ubah objek yang dikembalikan langsung oleh
document.pages,page.annotations, ataudocument.form— penyuntingan yang dilakukan pada salinan terpisah dari halaman atau bidang tidak akan tercermin saat Anda memanggilsave(). PageCollectiondiindeks mulai dari nol dalam ikatan Python ini (document.pages[0]adalah halaman pertama).- Tangkap
InvalidPasswordExceptiondanPdfParseExceptionsebelumAsposePdfExceptionyang lebih luas saat memanggilload_from()pada masukan yang tidak dipercaya, sehingga Anda dapat merespons secara berbeda antara kata sandi yang salah dan file yang rusak. - Panggil
document.optimize()ataucompress_streams()sebelumsave()pada dokumen yang banyak diedit untuk menghapus sumber daya yang tidak terpakai dan memperkecil ukuran file. - Berikan
PdfLoadLimitsyang dibatasi keload_from()saat memproses PDF dari sumber yang tidak dipercaya, untuk membatasi memori dan jumlah objek selama parsing.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
save() menghasilkan file dengan edit yang tidak berubah | Edit dilakukan pada halaman, anotasi, atau salinan bidang alih-alih objek yang diperoleh dari document.pages, annotations, atau form | Modifikasi objek yang dikembalikan langsung oleh koleksi-koleksi tersebut |
InvalidPasswordException pada load_from() | Dokumen dilindungi kata sandi dan tidak ada kata sandi, atau kata sandi yang salah, yang diberikan | Masukkan kata sandi yang benar: document.load_from(path, password="...") |
validate_pdfa() masih melaporkan kesalahan font setelah convert_to_pdfa() | Tidak ada file font yang cocok ditemukan dalam font_lookup_directory yang disediakan | Tambahkan font yang hilang ke direktori pencarian, atau daftarkan dengan FontRepository sebelum mengonversi |
| Gambar yang dirender terlihat kosong | Indeks halaman yang salah diberikan ke save_page_as_image() atau render() | pages menggunakan indeks nol — konfirmasikan indeksnya, dan periksa apakah PdfExtractor mengembalikan teks untuk halaman tersebut sama sekali |
Bidang yang ditambahkan dengan Form.add_text_field() tidak muncul di halaman | Persegi panjang widget berada di luar media_box halaman | Pastikan koordinat persegi panjang berada di dalam Page.media_box |
FAQ
Apakah Aspose.PDF FOSS untuk Python bergantung pada mesin PDF komersial?
Tidak. Ini adalah mesin PDF murni-Python yang dibangun dari nol, dirilis di bawah lisensi MIT. Satu-satunya dependensi runtime-nya adalah cryptography dan asn1crypto, yang digunakan untuk enkripsi dan verifikasi tanda tangan.
Apakah saya dapat membuat PDF dari nol alih-alih membuka yang sudah ada?
Ya. Document() tanpa argumen membuat dokumen kosong di memori; panggil document.pages.add() untuk menambahkan halaman sebelum menyimpan.
Format raster apa yang dapat saya render halaman ke?
Page.render dan Document.save_page_as_image menghasilkan output raster PNG atau TIFF; RasterizedPage yang dikembalikan juga menyediakan data piksel mentah melalui get_pixel() dan properti pixels.
Exception apa yang harus saya tangkap untuk kesalahan khusus paket?
Tangkap AsposePdfException. Setiap kesalahan khusus paket — termasuk parsing (PdfParseException), kata sandi dan enkripsi (PdfSecurityException, InvalidPasswordException), serta kegagalan validasi (PdfValidationException) — berasal darinya.
Ke mana saya harus pergi selanjutnya?
Memulai mencakup instalasi, lisensi, dan contoh kerja pertama. Panduan pengembang ini melanjutkan dengan topik manajemen dokumen seperti formulir, lampiran file tersemat, penemuan font, dan penulisan outline/buku tanda.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
Document | Objek root — buat, muat, simpan, dan kelola PDF |
Document.pages | Mutable PageCollection dokumen |
Document.load_from / Document.save | Baca dari atau tulis ke jalur, byte, atau aliran |
Document.encrypt / Document.decrypt | Lindungi dengan kata sandi atau hapus perlindungan |
Document.validate_pdfa / Document.convert_to_pdfa | Pemeriksaan kepatuhan heuristik PDF/A dan konversi |
Document.validate_pdfua() / Document.auto_tag | Pemeriksaan aksesibilitas PDF/UA dan penandaan otomatis struktur |
Page.add_text | Tambahkan teks berposisi ke halaman |
Page.render | Render halaman ke RasterizedPage |
PdfExtractor | Ekstrak teks halaman dan lampiran yang disematkan |
PdfFileEditor | Menggabungkan, memisahkan, menyisipkan, dan menghapus halaman di seluruh file |
Form / Field | container AcroForm dan bidang formulir individual |
PdfSignature / SigningUtils | Validasi dan pembuatan tanda tangan digital |
AsposePdfException | Kelas dasar untuk setiap pengecualian khusus paket |