บทนำ

Aspose.PDF FOSS สำหรับ Python มี subpackage aspose_pdf.generated ที่มีสี่โมดูล: document.py, forms.py, pdfa.py และ security.py. ไม่มีโมดูลใดถูก re-exported จากแพ็กเกจระดับบนสุด aspose_pdf ดังนั้นคลาสทุกคลาสในคู่มือนี้จะถูกนำเข้าโดยใช้เส้นทางเต็มที่มีจุด — from aspose_pdf.generated.document import Document, ไม่ใช่ from aspose_pdf import Document.

สี่โมดูลใช้สองแนวทางที่แตกต่างกัน generated.document, generated.forms และ generated.pdfa แต่ละโมดูลกำหนดคลาสของตนเอง: การทำงานที่เป็นอิสระซึ่งสะท้อนรูปแบบของ Document ของแพ็กเกจหลัก, UnsignedContent/UnsignedContentAbsorber, และ PdfAValidateOptions/PdfAValidationResult — มีประโยชน์สำหรับโค้ดที่เขียนตามโครงสร้างเนมสเปซที่สะท้อนนี้, แต่เป็นชุดคลาสจริงที่แยกจากกัน ไม่ใช่ alias. ในทางกลับกัน generated.security ไม่ทำการ reimplementation ใดเลย: มัน import CompromiseCheckResult, SignaturesCompromiseDetector และ enum การตรวจสอบโดยตรงจาก aspose_pdf.security และ aspose_pdf.validation แล้ว re-exports พวกมัน, ดังนั้นเส้นทางการ import ทั้งสองจะแก้ไขเป็นอ็อบเจ็กต์คลาสเดียวกัน.

คู่มือนี้ครอบคลุมสี่โมดูลทั้งหมดและระบุอย่างชัดเจนว่าคลาส generated ทำงานแตกต่างจากคลาสคู่เทียบในแพ็กเกจหลักที่มีชื่อเดียวกันอย่างไร — Document และ UnsignedContentAbsorber มีอยู่ในสองที่พร้อมการทำงานที่แตกต่างกันสองแบบ, ซึ่งเป็นสิ่งที่มักทำให้เกิดความผิดพลาดง่ายเมื่อนำเข้าโดยใช้ชื่อเพียงอย่างเดียว.

Aspose.PDF FOSS สำหรับ Python เป็นแพ็กเกจ Python, aspose-pdf-foss-for-python, เปิดตัวภายใต้สัญญาอนุญาต MIT, ต้องการ Python เวอร์ชัน 3.11 ขึ้นไป. ชื่อโมดูลระดับบนสุดคือ aspose_pdf; ดูส่วน เริ่มต้นอย่างรวดเร็ว ด้านล่างสำหรับการติดตั้ง. แพ็กเกจหลักขึ้นอยู่เฉพาะกับ cryptography และ asn1crypto; ส่วนเสริมทางเลือกเพิ่มการถอดรหัสภาพด้วย Pillow, การสนับสนุนฟอนต์ WOFF2 ด้วย Brotli, และการจัดวางข้อความเชิงซับซ้อนโดยใช้ HarfBuzz.


คุณสมบัติหลัก

การใช้งานเอกสารที่สอง

aspose_pdf.generated.document.Document ใช้วงจรชีวิตหลักเดียวกับ aspose_pdf.Document หลัก — load_from(), save(), encrypt()/decrypt()/change_passwords(), optimize()/optimize_resources(), repair(), flatten(), และ validate()/check() — บนเครื่องยนต์ aspose_pdf.engine.simple_pdf.SimplePdf เดียวกัน มันเป็นสำเนาของส่วนย่อยของ Document หลัก: ไม่มีการเขียนหน้าแบบ pages.add(), ไม่มี form/outlines/attachments, และไม่มี render_page(). เนื่องจากชื่อคลาสชนกับ Document ของแพ็คเกจหลัก, ให้ import ด้วย alias เมื่อทั้งสองต้องใช้ในโมดูลเดียวกัน.

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()

การบรรจุเนื้อหาแบบไม่มีลายเซ็น

aspose_pdf.generated.forms.UnsignedContentAbsorber และ UnsignedContent ให้คอนเทนเนอร์สำหรับฟิลด์ฟอร์ม, หน้า, และคำอธิบายที่ไม่ได้ลงลายเซ็น. สิ่งนี้แตกต่างจาก aspose_pdf.UnsignedContentAbsorber(document) ระดับบนสุด, ซึ่งรับ Document จริงและกรอง form_fields/annotations ของมันสำหรับรายการที่แอตทริบิวต์ is_signed/signed เป็นค่าเท็จ. เวอร์ชัน generated.forms ไม่รับเอกสารใดเลย — extract() เพียงแค่บรรจุ pages, form_fields, และ annotations ที่คุณส่งเป็นอาร์กิวเมนต์แบบคีย์เวิร์ดเข้าไปในอินสแตนซ์ของ UnsignedContent, ซึ่งมีประโยชน์เมื่อรายการที่ไม่มีลายเซ็นถูกเก็บรวบรวมไว้แล้วในที่อื่นและเพียงต้องการคอนเทนเนอร์ร่วมและ 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())

PDF/A ตัวเลือกการตรวจสอบและผลลัพธ์

aspose_pdf.generated.pdfa.PdfAValidateOptions รวบรวมการตั้งค่าการตรวจสอบและแหล่งข้อมูลเข้า; PdfAValidationResult รวบรวมผลลัพธ์. PdfAValidateOptions.add_input() ตรวจสอบเส้นทางสตริงด้วย Path.exists() ก่อนรับและโยน PdfIOException ถ้าไฟล์ไม่พบ, เพื่อให้ผู้เรียกทราบเส้นทางอินพุตที่ผิดพลาดทันทีแทนที่จะรอจนถึงเวลาการตรวจสอบ.

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())

ประเภทความปลอดภัยและการตรวจสอบที่ส่งออกซ้ำ

aspose_pdf.generated.security import CompromiseCheckResult และ SignaturesCompromiseDetector โดยตรงจาก aspose_pdf.security, และ CertificationLevel, RevocationStatus, TrustStatus, ValidationMethod, ValidationMode, ValidationOptions, ValidationResult, และ ValidationStatus จาก aspose_pdf.validation. แตกต่างจาก Document และ UnsignedContentAbsorber, ไม่มีการทำซ้ำอย่างอิสระที่นี่ — ทั้งสองเส้นทางการ import จะคืนค่าอ็อบเจกต์เดียวกัน.

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)

เริ่มต้นอย่างรวดเร็ว

ติดตั้งแพคเกจ, จากนั้นสร้างเอกสารด้วย Document หลัก, บันทึกมัน, และรันผ่านตัวเลือก generated.pdfa และอ็อบเจกต์ผลลัพธ์.

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())

รูปแบบที่รองรับ

รูปแบบส่วนขยายอ่านเขียน
PDFpdfใช่ใช่

การอ่านและเขียน PDF Aspose.PDF FOSS สำหรับฟังก์ชันหลักของ Python. ทุกคลาสในคู่มือนี้ — Document หลัก, generated.document.Document mirror, และตัวช่วย PDF/A — ทำงานกับอินพุตและเอาต์พุต PDF ผ่านเอนจิน SimplePdf ที่ใช้ร่วมกัน; aspose_pdf.generated เปลี่ยนคลาสที่คุณนำเข้า, ไม่ใช่รูปแบบไฟล์ที่กำลังประมวลผล.


โอเพนซอร์ส & การให้สิทธิ์ใช้งาน

Aspose.PDF FOSS สำหรับ Python ถูกเผยแพร่ภายใต้สัญญาอนุญาต MIT: ไม่มีข้อจำกัดการใช้งาน, ไม่เสียค่าใช้จ่ายในระหว่างทำงาน, และไม่ต้องลงทะเบียนสำหรับการใช้เชิงพาณิชย์หรือส่วนบุคคล. โค้ดต้นฉบับโฮสต์ที่ github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python, และแพคเกจถูกตีพิมพ์บน PyPI ในชื่อ aspose-pdf-foss-for-python.


เริ่มต้นใช้งาน

แหล่งข้อมูลที่เกี่ยวข้อง