Pendahuluan

Aspose.PDF FOSS untuk Python mencakup subpaket aspose_pdf.generated dengan empat modul: document.py, forms.py, pdfa.py, dan security.py. Tidak ada yang diekspor ulang dari paket aspose_pdf tingkat atas, sehingga setiap kelas dalam panduan ini diimpor dengan jalur bertitik lengkapnya — from aspose_pdf.generated.document import Document, bukan from aspose_pdf import Document.

Keempat modul mengambil dua pendekatan berbeda. generated.document, generated.forms, dan generated.pdfa masing-masing mendefinisikan kelas mereka sendiri: implementasi independen yang mencerminkan bentuk Document, UnsignedContent/UnsignedContentAbsorber, dan PdfAValidateOptions/PdfAValidationResult paket utama — berguna untuk kode yang ditulis terhadap tata letak namespace yang dicerminkan itu, tetapi merupakan kumpulan kelas yang nyata dan terpisah bukan alias. Di sisi lain, generated.security tidak melakukan reimplementasi sama sekali: ia mengimpor CompromiseCheckResult, SignaturesCompromiseDetector, dan enum validasi secara langsung dari aspose_pdf.security dan aspose_pdf.validation serta mengekspornya kembali, sehingga kedua jalur impor menyelesaikan ke objek kelas yang identik.

Panduan ini mencakup semua empat modul, dan secara eksplisit menjelaskan di mana kelas generated berperilaku berbeda dari rekan paket utama dengan nama yang sama — Document dan UnsignedContentAbsorber keduanya ada di dua tempat dengan dua implementasi yang berbeda, yang merupakan jenis hal yang mudah keliru ketika mengimpor hanya berdasarkan nama.

Aspose.PDF FOSS untuk Python adalah paket Python, aspose-pdf-foss-for-python, dirilis di bawah lisensi MIT, membutuhkan Python 3.11 atau lebih baru. Nama modul tingkat atasnya adalah aspose_pdf; lihat bagian Panduan Cepat di bawah untuk instalasi. 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

Implementasi Dokumen Kedua

aspose_pdf.generated.document.Document mengimplementasikan siklus hidup inti yang sama seperti aspose_pdf.Document utama — load_from(), save(), encrypt()/decrypt()/change_passwords(), optimize()/optimize_resources(), repair(), flatten(), dan validate()/check() — di atas mesin aspose_pdf.engine.simple_pdf.SimplePdf yang sama. Ini mencerminkan subset dari Document utama: tidak memiliki penulisan halaman gaya pages.add(), tidak ada form/outlines/attachments, dan tidak ada render_page(). Karena nama kelas bentrok dengan Document paket utama, impor dengan alias ketika keduanya diperlukan dalam modul yang sama.

from aspose_pdf import Document
from aspose_pdf.generated.document import Document as CompatDocument

with Document() as document:
    document.pages.add()
    document.save("source.pdf")

compat = CompatDocument()
compat.load_from("source.pdf")
print(compat.page_count, compat.is_encrypted)

compat.optimize(compress_images=True)
compat.save("optimized.pdf", overwrite=True)
compat.dispose()

Mengemas Konten Tanpa Tanda Tangan

aspose_pdf.generated.forms.UnsignedContentAbsorber dan UnsignedContent menyediakan wadah untuk bidang formulir, halaman, dan anotasi yang tidak ditandatangani. Ini berbeda dari aspose_pdf.UnsignedContentAbsorber(document) tingkat atas, yang mengambil Document nyata dan menyaring form_fields/annotationsnya untuk item yang atribut is_signed/signednya bernilai false. Versi generated.forms tidak mengambil dokumen sama sekali — extract() hanya mengemas apa pun pages, form_fields, dan annotations yang Anda berikan sebagai argumen kata kunci ke dalam instance UnsignedContent, yang berguna ketika item tanpa tanda tangan sudah dikumpulkan di tempat lain dan hanya memerlukan wadah bersama serta add_page()/remove_page()-style mutators.

from aspose_pdf.generated.forms import UnsignedContentAbsorber

absorber = UnsignedContentAbsorber()
content = absorber.extract(
    form_fields=["signature_field", "initials_field"],
    annotations=["review_stamp"],
)
print(absorber.has_extracted(), content.form_fields, content.annotations)

content.add_page("page-1")
absorber.reset()
print(absorber.get_extracted())

Opsi Validasi PDF/A dan Hasil

aspose_pdf.generated.pdfa.PdfAValidateOptions mengumpulkan pengaturan validasi dan sumber input; PdfAValidationResult mengumpulkan hasilnya. PdfAValidateOptions.add_input() memeriksa jalur string dengan Path.exists() sebelum menerimanya dan menimbulkan PdfIOException jika berkas tidak ada, sehingga pemanggil mengetahui jalur input yang buruk secara langsung bukan saat waktu validasi.

from aspose_pdf import Document
from aspose_pdf.exceptions import PdfIOException
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult

with Document() as document:
    document.pages.add()
    document.save("candidate.pdf")

options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
print(options.get_options(), options.inputs)

try:
    options.add_input("missing.pdf")
except PdfIOException as error:
    print(f"rejected: {error}")

result = PdfAValidationResult()
result.add_error("Missing /OutputIntent for PDF/A-2b")
print(result.is_valid, result.to_dict())

Tipe Keamanan dan Validasi yang Diekspor Ulang

aspose_pdf.generated.security mengimpor CompromiseCheckResult dan SignaturesCompromiseDetector langsung dari aspose_pdf.security, serta CertificationLevel, RevocationStatus, TrustStatus, ValidationMethod, ValidationMode, ValidationOptions, ValidationResult, dan ValidationStatus dari aspose_pdf.validation. Berbeda dengan Document dan UnsignedContentAbsorber, tidak ada implementasi ulang independen di sini — kedua jalur impor mengembalikan objek yang sama.

from aspose_pdf.generated.security import SignaturesCompromiseDetector
from aspose_pdf.security import SignaturesCompromiseDetector as CanonicalDetector

assert SignaturesCompromiseDetector is CanonicalDetector

detector = SignaturesCompromiseDetector(document=None)
result = detector.check()
print(result.compromised, result.reasons)

Panduan Cepat

Instal paket, lalu buat dokumen dengan Document utama, simpan, dan jalankan melalui opsi generated.pdfa serta objek hasil.

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
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult

with Document() as document:
    page = document.pages.add()
    page.add_text("PDF/A candidate", x=72, y=740, font_size=20)
    document.save("candidate.pdf")

options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")

result = PdfAValidationResult()
if not options.inputs:
    result.add_error("No inputs registered")

print(result.to_dict())

Format yang Didukung

FormatEkstensiBacaTulis
PDFpdfYaYa

Pembacaan dan penulisan PDF Aspose.PDF FOSS untuk fungsi inti Python. Setiap kelas dalam panduan ini — Document utama, cermin generated.document.Document, dan pembantu PDF/A — beroperasi pada masukan dan keluaran PDF melalui mesin SimplePdf bersama; aspose_pdf.generated mengubah kelas mana yang Anda impor, bukan format berkas yang diproses.


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.


Memulai

Sumber Daya Terkait