Bekerja dengan Kompatibilitas yang Dihasilkan API
Bekerja dengan API Kompatibilitas yang Dihasilkan
Aspose.PDF FOSS untuk Python menyediakan antarmuka API kedua yang lebih kecil di bawah subpaket aspose_pdf.generated: generated.document.Document, generated.forms.UnsignedContent dan UnsignedContentAbsorber, serta generated.pdfa.PdfAValidateOptions dan PdfAValidationResult. Setiap kelas ini memiliki nama yang sama dengan kelas di API utama perpustakaan (aspose_pdf.Document, aspose_pdf.UnsignedContent, dan seterusnya), tetapi mereka adalah kelas yang terpisah, didefinisikan secara independen dengan antarmuka metode yang diperkecil. Mereka ada sebagai lapisan kompatibilitas mandiri — selalu impor mereka menggunakan jalur aspose_pdf.generated.* lengkap sehingga Anda tahu mana yang dipanggil.
Siklus hidup Dokumen melalui Dokumen yang dihasilkan
generated.document.Document mendukung siklus hidup dokumen inti: memuat, menyimpan, optimisasi dasar, enkripsi, dan validasi. Sebagian besar propertinya bertipe Any daripada tipe yang lebih kaya yang tersedia pada kelas Document utama.
from aspose_pdf.generated.document import Document
doc = Document()
doc.load_from("input.pdf")
doc.optimize(compress_images=True)
doc.optimize_resources(remove_unused=True)
if doc.validate():
doc.save("output.pdf")
doc.dispose()Enkripsi dan perubahan kata sandi menggunakan formulir satu kata sandi alih-alih kata sandi pengguna/pemilik terpisah dari Document.encrypt utama:
from aspose_pdf.generated.document import Document
doc = Document()
doc.load_from("input.pdf")
doc.encrypt("secret")
doc.change_passwords("secret", "new-secret")
doc.save("protected.pdf")Mengekstrak konten yang belum ditandatangani
generated.forms.UnsignedContentAbsorber mengekstrak halaman, bidang formulir, dan anotasi dari dokumen yang belum ditandatangani ke dalam kontainer UnsignedContent. Panggil extract() untuk menjalankan ekstraksi, kemudian get_extracted() atau has_extracted() untuk memeriksa hasilnya tanpa menjalankannya kembali.
from aspose_pdf.generated.document import Document
from aspose_pdf.generated.forms import UnsignedContentAbsorber
doc = Document()
doc.load_from("input.pdf")
absorber = UnsignedContentAbsorber()
extracted = absorber.extract()
print(len(extracted.pages), len(extracted.form_fields), extracted.annotations)
if absorber.has_extracted():
same_result = absorber.get_extracted()
absorber.reset()UnsignedContent juga dapat dibangun dan diisi secara langsung, terlepas dari absorber:
from aspose_pdf.generated.forms import UnsignedContent
bundle = UnsignedContent()
bundle.add_page(some_page)
bundle.add_form_field(some_field)
bundle.add_annotation(some_annotation)
bundle.remove_page(some_page)
bundle.reset()Opsi validasi PDF/A dan hasil
generated.pdfa.PdfAValidateOptions dan PdfAValidationResult adalah pasangan opsi/hasil mandiri untuk alur kerja validasi bergaya PDF/A. Mereka bukan kelas yang dikembalikan oleh Document.validate_pdfa() milik API utama atau yang dikonsumsi oleh PdfAValidator.process() — yang tersebut menggunakan kelas PdfAValidateOptions dan PdfAValidationResult mereka sendiri, yang didefinisikan secara terpisah dengan permukaan yang lebih kaya (level, warnings, is_heuristic, dan font_lookup_directory).
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
options = PdfAValidateOptions()
options.add_input()
options.set_option("level", "1b")
stored_options = options.get_options()
result = PdfAValidationResult()
result.add_error("Font not embedded: Arial")
summary = result.to_dict()
is_valid = result.is_validTips dan Praktik Terbaik
- Impor setiap kelas
generatedmelalui jalur submodul lengkapnya (from aspose_pdf.generated.document import Document, dan serupa untukgenerated.formssertagenerated.pdfa) — jangan pernah menganggap bahwa imporDocumentatauUnsignedContentsaja akan menyelesaikan ke versi kompatibilitas. - Berikan kelas yang diimpor nama lokal yang membedakan setiap kali sebuah file juga menggunakan API utama dalam modul yang sama, sehingga kedua permukaan tetap terlihat terpisah di setiap lokasi pemanggilan.
- Anggap
generated.pdfa.PdfAValidateOptions/PdfAValidationResultsebagai pasangan yang berdiri sendiri: bangun opsi, jalankan logika validasi Anda sendiri, dan catat temuan denganadd_error()secara mandiri — mereka tidak diisi otomatis olehDocument.validate_pdfa(). - Periksa
UnsignedContentAbsorber.has_extracted()sebelum memanggilget_extracted()jika Anda tidak yakinextract()sudah dijalankan. - Lebih pilih
aspose_pdf.DocumentAPI utama untuk kode baru kecuali Anda secara khusus memerlukan permukaan kompatibilitas yang dihasilkan dan diperkecil.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
Metode Document yang salah tersedia (hilang pages, form, xmp_metadata, dan serupa) | Mengimpor generated.document.Document alih-alih aspose_pdf.Document utama | Impor kelas utama (import aspose_pdf; aspose_pdf.Document()) kecuali jika permukaan yang diperkecil adalah yang Anda maksud |
PdfAValidateOptions/PdfAValidationResult dari generated.pdfa tidak bekerja dengan PdfAValidator.process() | API utama PdfAValidator mengharapkan kelas PdfAValidateOptions/PdfAValidationResult miliknya sendiri, bukan versi generated.pdfa | Gunakan kelas PdfAValidateOptions/PdfAValidationResult yang diekspor dari aspose_pdf untuk alur kerja PdfAValidator |
get_extracted() mengembalikan None | extract() tidak pernah dipanggil pada instance UnsignedContentAbsorber tersebut | Panggil extract() sebelum get_extracted(), atau periksa has_extracted() terlebih dahulu |
Properti pada generated.document.Document bertipe Any dan tidak memberikan autocomplete | Permukaan yang dihasilkan menukar pengetikan statis dengan API yang lebih kecil dan lebih sederhana | Lakukan cast atau dokumentasikan tipe yang diharapkan di lokasi pemanggilan, atau beralih ke kelas Document utama untuk pengetikan yang lebih kaya |
FAQ
Apakah aspose_pdf.generated merupakan stub atau placeholder?
Tidak. Itu adalah subpaket yang nyata dan dapat diimpor dengan kelas-kelas yang berfungsi — Document, UnsignedContent, UnsignedContentAbsorber, PdfAValidateOptions, dan PdfAValidationResult — ini hanya permukaan yang lebih kecil dan berdiri sendiri dibandingkan API utama perpustakaan.
Mengapa generated.document.Document memiliki nama yang sama dengan aspose_pdf.Document?
Mereka adalah dua kelas yang didefinisikan secara independen yang kebetulan memiliki nama yang sama. Mengimpor dari aspose_pdf.generated.document memberi Anda versi kompatibilitas; mengimpor aspose_pdf.Document (atau from aspose_pdf import Document) memberi Anda versi utama.
Apakah saya dapat mengirimkan generated.pdfa.PdfAValidateOptions ke PdfAValidator.process()?
Tidak. PdfAValidator.process() merupakan bagian dari API utama dan mengharapkan kelas PdfAValidateOptions milik API utama, yang memiliki tanda tangan metode yang berbeda (add_input(source) alih-alih add_input() tanpa argumen).
Apakah UnsignedContentAbsorber.extract() memerlukan argumen Document?
Tidak. extract() tidak menerima argumen dalam permukaan kompatibilitas yang dihasilkan; bangun absorber dan panggil extract() secara langsung.
Ringkasan API Reference
| Kelas / Metode | Deskripsi |
|---|---|
Document.load_from | Memuat dokumen dari jalur file, byte, atau aliran |
Document.save | Menyimpan dokumen ke tujuan |
Document.optimize | Melakukan optimasi umum, secara opsional mengompresi gambar |
Document.optimize_resources | Mengoptimalkan sumber daya bersama seperti font dan gambar |
Document.encrypt | Mengenkripsi dokumen dengan satu password |
Document.change_passwords | Mengubah password dokumen |
Document.validate | Mengembalikan apakah dokumen secara struktural valid |
Document.dispose | Melepaskan sumber daya yang terkait dengan dokumen |
UnsignedContent.add_page / remove_page | Menambahkan atau menghapus halaman dari bundel konten yang tidak ditandatangani |
UnsignedContent.add_form_field / remove_form_field | Menambahkan atau menghapus bidang formulir dari bundel konten yang tidak ditandatangani |
UnsignedContent.add_annotation / remove_annotation | Menambahkan atau menghapus anotasi dari bundel unsigned-content |
UnsignedContentAbsorber.extract | Mengekstrak konten unsigned ke dalam instance UnsignedContent |
UnsignedContentAbsorber.get_extracted | Mengembalikan UnsignedContent yang terakhir diekstrak, jika ada |
UnsignedContentAbsorber.has_extracted | Melaporkan apakah ekstraksi telah dilakukan |
PdfAValidateOptions.add_input | Mendaftarkan sumber masukan untuk validasi |
PdfAValidateOptions.set_option / get_options | Mengatur atau membaca nilai opsi validasi |
PdfAValidationResult.add_error | Menambahkan pesan kesalahan dan menandai hasil tidak valid |
PdfAValidationResult.to_dict | Mengembalikan representasi kamus dari hasil validasi |