Aspose.PDF FOSS for Python คุณลักษณะ
Aspose.PDF FOSS สำหรับ Python ฟีเจอร์
Aspose.PDF FOSS สำหรับ Python เป็นไลบรารี pure-Python สำหรับการสร้าง, เปิด, แก้ไข และบันทึกเอกสาร PDF หน้านี้สำรวจพื้นที่ความสามารถหลักและคลาสที่ทำหน้าที่เป็นจุดเริ่มต้นของพวกมัน แต่ละพื้นที่จะได้รับการอธิบายในเชิงลึกบนหน้า developer-guide ของตนเอง.
การจัดการเอกสารและหน้า
Document เป็นอ็อบเจกต์รากสำหรับทุกการดำเนินการ สร้างมันโดยไม่มีอาร์กิวเมนต์เพื่อเริ่มต้นเอกสารใหม่ที่ว่างเปล่า หรือเรียก load_from() เพื่ออ่านเอกสารที่มีอยู่จากพาธ, ไบต์, หรือสตรีม document.pages เปิดเผย PageCollection ที่เปลี่ยนแปลงได้, และ Page.add_text วางข้อความที่จัดตำแหน่งบนหน้า.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
page.add_text("Hello from Aspose.PDF FOSS!", x=72, y=720, font_size=18)
document.save("hello.pdf")การสกัดข้อความและการค้นหา
PdfExtractor ผูกกับเอกสารและดึงข้อความออกทีละหน้า bind_pdf() เปิดแหล่งข้อมูล, extract_text() ทำการสกัด, และ get_text() คืนค่าผลลัพธ์ที่สะสม.
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()สำหรับการค้นหาและแทนที่แบบจัดตำแหน่งต่อส่วนย่อย, TextFragmentAbsorber แสดงออบเจกต์ TextFragment ที่ตรงกันโดยมี text_search_options ควบคุมความไวต่อขนาดตัวอักษรและการจับคู่ด้วย regular-expression.
การแปลงหน้าเป็นภาพ
Document.save_page_as_image แสดงผลหน้าเดียวโดยตรงเป็นไฟล์ PNG หรือ TIFF ที่ความละเอียด DPI ที่กำหนดได้ สำหรับการเข้าถึงระดับล่างกว่า Page.render จะคืนค่า RasterizedPage ที่มีข้อมูลพิกเซลดิบผ่าน get_pixel() และ pixels.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)แบบฟอร์มและฟิลด์เชิงโต้ตอบ
AcroForm ฟิลด์ถูกจัดการผ่าน Document.form ซึ่งเป็นฟาซาด Form. Form.add_text_field() (รวมถึงเช็คบ็อกซ์, เรดิโอ, รายการ, และคอมโบบ็อกซ์ที่เทียบเท่า) สร้างฟิลด์ใหม่ที่เชื่อมกับหน้าและสี่เหลี่ยมวิดเจ็ต, คืนค่า Field. Form.fields แสดงรายการฟิลด์ทั้งหมดที่มีอยู่ในเอกสารในปัจจุบัน.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))
for field in document.form.fields:
print(field.name, field.field_type)
document.save("form.pdf")ความปลอดภัย, การเข้ารหัส, และลายเซ็น
Document.encrypt ปกป้องเอกสารด้วยรหัสผ่านผู้ใช้ (จำเป็นต้องใช้เพื่อเปิด) และรหัสผ่านเจ้าของ (จำเป็นต้องใช้เพื่อเปลี่ยนสิทธิ์); decrypt() และ change_passwords() จัดการการปกป้องบนเอกสารที่เปิดอยู่แล้ว. is_encrypted รายงานสถานะปัจจุบัน.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.encrypt(user_password="secret", owner_password="owner-secret")
document.save("encrypted.pdf")การตรวจสอบลายเซ็นดิจิทัลถูกจัดการโดย PdfSignature.validate, ซึ่งคืนค่า ValidationResult ที่อธิบายสถานะความเชื่อถือและการเพิกถอน, และ SigningUtils ให้เครื่องมือช่วยสำหรับใบรับรองและการลงลายเซ็น PKCS#7/CAdES.
PDF/A และ PDF/UA การปฏิบัติตาม
Document.validate_pdfa ทำการตรวจสอบการปฏิบัติตามแบบฮิวริสติก PDF/A และส่งคืน PdfAValidationResult; convert_to_pdfa() พยายามแก้ไขเอกสารให้ถึงระดับนั้น. validate_pdfua() และ auto_tag() ให้การตรวจสอบการเข้าถึงที่เทียบเท่าและการแท็กโครงสร้างต้นไม้อัตโนมัติสำหรับ PDF/UA.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
result = document.validate_pdfa("1b")
if not result.is_valid:
document.convert_to_pdfa("1b")
document.auto_tag()
document.save("compliant.pdf")เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
- แก้ไขอ็อบเจ็กต์ที่ส่งคืนโดยตรงโดย
document.pages,page.annotationsหรือdocument.form— การแก้ไขที่ทำกับสำเนาแยกของหน้า หรือฟิลด์จะไม่แสดงผลเมื่อคุณเรียกsave(). PageCollectionใช้การนับตั้งแต่ศูนย์ใน binding Python นี้ (document.pages[0]คือหน้แรก).- ดักจับ
InvalidPasswordExceptionและPdfParseExceptionก่อนAsposePdfExceptionที่กว้างขึ้นเมื่อเรียกload_from()กับอินพุตที่ไม่เชื่อถือได้ เพื่อให้คุณสามารถตอบสนองแตกต่างกันระหว่างรหัสผ่านที่ไม่ถูกต้องกับไฟล์ที่เสียหาย. - เรียก
document.optimize()หรือcompress_streams()ก่อนsave()บนเอกสารที่แก้ไขอย่างหนักเพื่อเอาทรัพยากรที่ไม่ได้ใช้ออกและลดขนาดไฟล์. - ส่ง
PdfLoadLimitsที่มีขอบเขตให้กับload_from()เมื่อประมวลผล PDF จากแหล่งที่ไม่เชื่อถือได้ เพื่อจำกัดหน่วยความจำและจำนวนอ็อบเจ็กต์ระหว่างการพาร์ส.
ปัญหาที่พบบ่อย
| ปัญหา | สาเหตุ | การแก้ไข |
|---|---|---|
save() สร้างไฟล์ที่มีการแก้ไขคงเดิม | การแก้ไขถูกทำกับหน้า, คำอธิบาย, หรือสำเนาฟิลด์แทนที่จะเป็นอ็อบเจกต์ที่ได้จาก document.pages, annotations หรือ form | แก้ไขอ็อบเจกต์ที่ส่งกลับโดยตรงจากคอลเลกชันเหล่านั้น |
InvalidPasswordException on load_from() | เอกสารถูกป้องกันด้วยรหัสผ่านและไม่มีรหัสผ่าน หรือรหัสผ่านที่ให้ผิด | ป้อนรหัสผ่านที่ถูกต้อง: document.load_from(path, password="...") |
validate_pdfa() ยังรายงานข้อผิดพลาดของฟอนต์หลังจาก convert_to_pdfa() | ไม่พบไฟล์ฟอนต์ที่ตรงกันใน font_lookup_directory ที่ให้มา | เพิ่มฟอนต์ที่ขาดหายไปในไดเรกทอรีค้นหา หรือทำการลงทะเบียนกับ FontRepository ก่อนทำการแปลง |
| ภาพที่เรนเดอร์ดูเหมือนว่างเปล่า | ดัชนีหน้าที่ส่งให้ save_page_as_image() หรือ render() ไม่ถูกต้อง | pages ใช้การนับจากศูนย์ — ยืนยันดัชนีและตรวจสอบว่า PdfExtractor คืนข้อความสำหรับหน้านั้นหรือไม่ |
ฟิลด์ที่เพิ่มด้วย Form.add_text_field() ไม่ปรากฏบนหน้า | สี่เหลี่ยมวิดเจ็ตอยู่นอก media_box ของหน้า | ยืนยันว่าพิกัดสี่เหลี่ยมอยู่ภายใน Page.media_box |
FAQ
ส่วน Aspose.PDF FOSS สำหรับ Python พึ่งพาเอนจิ้น PDF เชิงพาณิชย์หรือไม่?
ไม่ใช่. มันเป็นเอนจิ้น PDF ที่พัฒนาตั้งแต่ต้น, pure-Python ที่เผยแพร่ภายใต้สัญญาอนุญาต MIT. ขึ้นตอน runtime ที่จำเป็นเพียง cryptography และ asn1crypto, ใช้สำหรับการเข้ารหัสและการตรวจสอบลายเซ็น.
ฉันสามารถสร้าง PDF ตั้งแต่ต้นแทนการเปิดไฟล์ที่มีอยู่ได้หรือไม่?
ใช่. Document() โดยไม่มีอาร์กิวเมนต์จะสร้างเอกสารเปล่าในหน่วยความจำ; เรียก document.pages.add() เพื่อเพิ่มหน้าก่อนบันทึก.
ฉันสามารถเรนเดอร์หน้าหนึ่งเป็นรูปแบบราสเตอร์ใดได้บ้าง?
Page.render และ Document.save_page_as_image ผลิตเอาต์พุตราสเตอร์เป็น PNG หรือ TIFF; RasterizedPage ที่ส่งคืนยังเปิดเผยข้อมูลพิกเซลดิบผ่าน get_pixel() และคุณสมบัติ pixels.
ฉันควรจับข้อยกเว้นใดสำหรับข้อผิดพลาดเฉพาะแพคเกจ?
จับ AsposePdfException. ข้อผิดพลาดเฉพาะแพ็กเกจทั้งหมด — รวมถึงการแยกวิเคราะห์ (PdfParseException), รหัสผ่านและการเข้ารหัส (PdfSecurityException, InvalidPasswordException), และการตรวจสอบความถูกต้อง (PdfValidationException) — มีต้นกำเนิดจากมัน.
ต่อไปฉันควรไปที่ไหน?
Getting Started ครอบคลุมการติดตั้ง, การให้สิทธิ์ใช้งาน, และตัวอย่างการทำงานแรก. คู่มือผู้พัฒนานี้ต่อด้วยหัวข้อการจัดการเอกสาร เช่น ฟอร์ม, การแนบไฟล์แบบฝัง, การค้นหาแบบอักษร, และการสร้างโครงร่าง/บุ๊กมาร์ก.
API Reference สรุป
| คลาส/เมธอด | คำอธิบาย |
|---|---|
Document | อ็อบเจ็กต์ราก — สร้าง, โหลด, บันทึก, และจัดการ PDF |
Document.pages | PageCollection ที่เปลี่ยนแปลงได้ของเอกสาร |
Document.load_from / Document.save | อ่านจากหรือเขียนไปยังเส้นทาง, ไบต์, หรือสตรีม |
Document.encrypt / Document.decrypt | ตั้งรหัสผ่านเพื่อป้องกันหรือยกเลิกการป้องกัน |
Document.validate_pdfa / Document.convert_to_pdfa | การตรวจสอบการปฏิบัติตามแบบเชิงฮิวริสติก PDF/A และการแปลง |
Document.validate_pdfua() / Document.auto_tag | การตรวจสอบการเข้าถึง PDF/UA และการแท็กโครงสร้างอัตโนมัติ |
Page.add_text | เพิ่มข้อความที่กำหนดตำแหน่งลงในหน้า |
Page.render | เรนเดอร์หน้าเป็น RasterizedPage |
PdfExtractor | ดึงข้อความของหน้าและไฟล์แนบที่ฝังไว้ |
PdfFileEditor | ต่อ, แบ่ง, แทรก, และลบหน้าข้ามไฟล์ |
Form / Field | คอนเทนเนอร์ AcroForm และฟิลด์ฟอร์มแต่ละอัน |
PdfSignature / SigningUtils | การตรวจสอบและสร้างลายเซ็นดิจิทัล |
AsposePdfException | คลาสพื้นฐานสำหรับข้อยกเว้นที่จำเพาะต่อแพ็กเกจแต่ละตัว |