การทำงานกับความเข้ากันได้ที่สร้างขึ้น API

การทำงานกับความเข้ากันได้ที่สร้างขึ้น API

ทำงานกับ API ที่สร้างขึ้นเพื่อความเข้ากันได้

Aspose.PDF FOSS สำหรับ Python มาพร้อมกับพื้นผิว API ที่สองและเล็กกว่า อยู่ภายใต้แพ็กเกจย่อย aspose_pdf.generated: generated.document.Document, generated.forms.UnsignedContent และ UnsignedContentAbsorber, รวมถึง generated.pdfa.PdfAValidateOptions และ PdfAValidationResult. คลาสแต่ละตัวนี้มีชื่อเดียวกับคลาสใน API หลักของไลบรารี (aspose_pdf.Document, aspose_pdf.UnsignedContent เป็นต้น), แต่เป็นคลาสที่แยกออกมาและกำหนดโดยอิสระโดยมีพื้นผิวเมธอดที่ลดลง. พวกมันอยู่เป็นเลเยอร์ความเข้ากันได้แบบสแตนด์อโลน — ควรนำเข้าตลอดเวลาโดยใช้เส้นทาง aspose_pdf.generated.* เต็มรูปแบบเพื่อให้คุณรู้ว่ากำลังเรียกคลาสไหน.


วงจรชีวิตของเอกสารผ่าน Document ที่สร้างขึ้น

generated.document.Document รองรับวงจรชีวิตหลักของเอกสาร: การโหลด, การบันทึก, การปรับให้เหมาะพื้นฐาน, การเข้ารหัส, และการตรวจสอบความถูกต้อง. คุณสมบัติบางส่วนของมันถูกกำหนดประเภทเป็น Any แทนประเภทที่ละเอียดกว่าในคลาสหลัก Document.

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

การเข้ารหัสและการเปลี่ยนรหัสผ่านใช้รูปแบบรหัสผ่านเดียวแทนการใช้รหัสผ่านผู้ใช้/เจ้าของแยกกันของ Document.encrypt หลัก:

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

การสกัดเนื้อหาที่ยังไม่ได้ลงลายเซ็น

generated.forms.UnsignedContentAbsorber สกัดหน้า, ฟิลด์ฟอร์ม, และคำอธิบายของเอกสารที่ยังไม่ได้ลงลายเซ็นเข้าไปในคอนเทนเนอร์ UnsignedContent. เรียก extract() เพื่อดำเนินการสกัด, จากนั้นใช้ get_extracted() หรือ has_extracted() เพื่อตรวจสอบผลลัพธ์โดยไม่ต้องรันใหม่.

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 สามารถสร้างและเติมข้อมูลโดยตรงได้เช่นกัน โดยไม่ขึ้นกับตัวดูด:

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

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

generated.pdfa.PdfAValidateOptions และ PdfAValidationResult คือคู่ตัวเลือก/ผลลัพธ์ที่ทำงานแยกจากกันสำหรับกระบวนการตรวจสอบแบบ PDF/A. พวกมันไม่ใช่คลาสที่ส่งคืนโดย API หลักของ Document.validate_pdfa() หรือที่ใช้โดย PdfAValidator.process() — สิ่งเหล่านั้นใช้คลาส PdfAValidateOptions และ PdfAValidationResult ของตนเองที่กำหนดแยกต่างหากพร้อมพื้นผิวที่อุดมขึ้น (level, warnings, is_heuristic, และ 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_valid

เคล็ดลับและแนวปฏิบัติที่ดีที่สุด

  • นำเข้าคลาส generated ทุกคลาสผ่านเส้นทางโมดูลย่อยเต็มรูปแบบของมัน (from aspose_pdf.generated.document import Document และเช่นเดียวกันสำหรับ generated.forms และ generated.pdfa) — อย่าเชื่อว่าการนำเข้าแบบเปล่า Document หรือ UnsignedContent จะอ้างอิงถึงเวอร์ชันความเข้ากันได้.
  • กำหนดชื่อท้องถิ่นที่แยกจากกันให้กับคลาสที่นำเข้าเมื่อไฟล์ใดไฟล์หนึ่งใช้ API หลักในโมดูลเดียวกัน เพื่อให้สองพื้นผิวแยกจากกันอย่างชัดเจนในทุกจุดเรียกใช้.
  • พิจารณา generated.pdfa.PdfAValidateOptions/PdfAValidationResult เป็นคู่ที่อิสระ: สร้างตัวเลือก, รันตรรกะการตรวจสอบของคุณเอง, และบันทึกผลลัพธ์ด้วย add_error() ด้วยตนเอง — พวกมันไม่ได้รับการเติมข้อมูลอัตโนมัติโดย Document.validate_pdfa().
  • ตรวจสอบ UnsignedContentAbsorber.has_extracted() ก่อนเรียก get_extracted() หากคุณไม่แน่ใจว่า extract() ได้ทำงานไปแล้วหรือยัง.
  • ควรใช้ aspose_pdf.Document API หลักสำหรับโค้ดใหม่ เว้นแต่คุณต้องการผิวหน้าที่ลดลงและสร้างความเข้ากันได้โดยเฉพาะ.

ปัญหาทั่วไป

ปัญหาสาเหตุการแก้ไข
เมธอด Document ที่ผิดพลาดที่มีอยู่ (ขาด pages, form, xmp_metadata และอื่น ๆ ที่คล้ายกัน)นำเข้า generated.document.Document แทนที่ aspose_pdf.Document หลักนำเข้าคลาสหลัก (import aspose_pdf; aspose_pdf.Document()) ยกเว้นหากคุณตั้งใจใช้พื้นผิวที่ลดลง
PdfAValidateOptions/PdfAValidationResult จาก generated.pdfa ไม่ทำงานกับ PdfAValidator.process()ส่วน PdfAValidator ของ API หลักคาดหวังคลาส PdfAValidateOptions/PdfAValidationResult ของตนเอง ไม่ใช่เวอร์ชัน generated.pdfaใช้คลาส PdfAValidateOptions/PdfAValidationResult ที่ส่งออกจาก aspose_pdf สำหรับกระบวนการทำงาน PdfAValidator
get_extracted() คืนค่า Noneextract() ไม่เคยถูกเรียกบนอินสแตนซ์ UnsignedContentAbsorber นั้นเรียก extract() ก่อน get_extracted() หรือเช็ก has_extracted() ก่อน
คุณสมบัติบน generated.document.Document มีประเภทเป็น Any และไม่มีการเติมข้อความอัตโนมัติพื้นผิวที่สร้างขึ้นแลกเปลี่ยนการพิมพ์แบบคงที่เพื่อให้ได้ API ที่เล็กลงและง่ายขึ้นทำการแคสต์หรือบันทึกประเภทที่คาดหวังที่จุดเรียกใช้, หรือเปลี่ยนไปใช้คลาส Document หลักสำหรับการพิมพ์ที่ละเอียดมากขึ้น

FAQ

aspose_pdf.generated เป็น stub หรือ placeholder หรือไม่?

ไม่ใช่. มันเป็น subpackage ที่นำเข้าได้จริงพร้อมคลาสที่ทำงานได้ — Document, UnsignedContent, UnsignedContentAbsorber, PdfAValidateOptions, และ PdfAValidationResult — มันเป็นเพียงผิวหน้าที่เล็กกว่าและแยกออกจากกันเมื่อเทียบกับ API หลักของไลบรารี.

ทำไม generated.document.Document ถึงมีชื่อเดียวกับ aspose_pdf.Document?

พวกมันเป็นคลาสสองคลาสที่กำหนดอย่างอิสระซึ่งบังเอิญมีชื่อเดียวกัน การนำเข้าจาก aspose_pdf.generated.document จะให้เวอร์ชันที่เข้ากันได้; การนำเข้า aspose_pdf.Document (หรือ from aspose_pdf import Document) จะให้เวอร์ชันหลัก.

ฉันสามารถส่ง generated.pdfa.PdfAValidateOptions ไปยัง PdfAValidator.process() ได้หรือไม่?

No. PdfAValidator.process() เป็นส่วนหนึ่งของ API หลักและคาดหวังคลาส PdfAValidateOptions ของ API หลัก ซึ่งมีลายเซ็นเมธอดที่แตกต่าง (add_input(source) แทน add_input() ที่ไม่มีอาร์กิวเมนต์).

UnsignedContentAbsorber.extract() ต้องการอาร์กิวเมนต์ Document หรือไม่?

No. extract() ไม่รับอาร์กิวเมนต์ใดในพื้นผิวความเข้ากันได้ที่สร้างขึ้น; สร้าง absorber แล้วเรียก extract() โดยตรง.


API Reference สรุป

คลาส / เมธอดคำอธิบาย
Document.load_fromโหลดเอกสารจากเส้นทางไฟล์, ไบต์ หรือสตรีม
Document.saveบันทึกเอกสารไปยังปลายทาง
Document.optimizeทำการเพิ่มประสิทธิภาพทั่วไป, โดยอาจบีบอัดรูปภาพ
Document.optimize_resourcesเพิ่มประสิทธิภาพทรัพยากรที่ใช้ร่วมกัน เช่น ฟอนต์และรูปภาพ
Document.encryptเข้ารหัสเอกสารด้วยรหัสผ่านเดียว
Document.change_passwordsเปลี่ยนรหัสผ่านของเอกสาร
Document.validateคืนค่าว่าเอกสารมีโครงสร้างที่ถูกต้องหรือไม่
Document.disposeปล่อยทรัพยากรที่เกี่ยวข้องกับเอกสาร
UnsignedContent.add_page / remove_pageเพิ่มหรือลบหน้าออกจากบันเดิล unsigned-content
UnsignedContent.add_form_field / remove_form_fieldเพิ่มหรือลบฟิลด์ฟอร์มออกจากบันเดิล unsigned-content
UnsignedContent.add_annotation / remove_annotationเพิ่มหรือลบ annotation ออกจากบันเดิล unsigned-content
UnsignedContentAbsorber.extractสกัด unsigned content ไปยังอินสแตนซ์ UnsignedContent
UnsignedContentAbsorber.get_extractedส่งคืน UnsignedContent ที่สกัดล่าสุด, ถ้ามี
UnsignedContentAbsorber.has_extractedรายงานว่ามีการสกัดเกิดขึ้นหรือไม่
PdfAValidateOptions.add_inputลงทะเบียนแหล่งข้อมูลเข้าเพื่อการตรวจสอบ
PdfAValidateOptions.set_option / get_optionsตั้งหรืออ่านค่าตัวเลือกการตรวจสอบความถูกต้อง
PdfAValidationResult.add_errorเพิ่มข้อความแสดงข้อผิดพลาดและทำเครื่องหมายผลลัพธ์ว่าไม่ถูกต้อง
PdfAValidationResult.to_dictคืนค่าการแทนเป็นพจนานุกรมของผลการตรวจสอบ

ดูเพิ่มเติม

 ภาษาไทย