Aspose.PDF FOSS for Python คุณลักษณะ

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.pagesPageCollection ที่เปลี่ยนแปลงได้ของเอกสาร
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คลาสพื้นฐานสำหรับข้อยกเว้นที่จำเพาะต่อแพ็กเกจแต่ละตัว

ดูเพิ่มเติม

 ภาษาไทย