การทำงานกับความเข้ากันได้ที่สร้างขึ้น 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.DocumentAPI หลักสำหรับโค้ดใหม่ เว้นแต่คุณต้องการผิวหน้าที่ลดลงและสร้างความเข้ากันได้โดยเฉพาะ.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | การแก้ไข |
|---|---|---|
เมธอด 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() คืนค่า None | extract() ไม่เคยถูกเรียกบนอินสแตนซ์ 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 | คืนค่าการแทนเป็นพจนานุกรมของผลการตรวจสอบ |