บทนำ

Aspose.PDF FOSS สำหรับ Python เป็นไลบรารีโอเพ่นซอร์สใหม่สำหรับทำงานกับเอกสาร PDF จากโค้ด Python มันเผยแพร่ภายใต้ไลเซนส์ MIT และถูกพัฒนาเต็มรูปแบบด้วย Python — พาร์เซอร์, ตัวเขียน, ตัวแปลงหน้าเป็นราสเตอร์, และขั้นตอนการเข้ารหัสเป็นส่วนหนึ่งของแพ็กเกจเอง, โดยพึ่งพาเพียง cryptography และ asn1crypto เท่านั้น ส่วนเสริมเพิ่มเติมให้การสนับสนุนภาพโดยใช้ Pillow, การถอดรหัสฟอนต์ WOFF2 ด้วย Brotli, และการจัดรูปแบบข้อความที่ซับซ้อนโดยใช้ HarfBuzz.

ไลบรารีจัดโครงสร้างโดยรอบคลาส Document, ซึ่งโหลดไฟล์ PDF จากพาธ, ไบต์, หรือสตรีมไบนารีและเปิดเผยหน้าต่าง ๆ ผ่าน document.pages, ซึ่งเป็น PageCollection ที่รองรับการวนซ้ำ, การเข้าถึงโดยดัชนี, และการสไลซ์ จากนั้น API ครอบคลุมการเพิ่มข้อความและรูปภาพลงในหน้า, การอ่านและแก้ไขคำอธิบาย, การสร้างและเติมฟิลด์ AcroForm, การเข้ารหัสและถอดรหัสเอกสาร, และการสกัดข้อความและไฟล์แนบ — การดำเนินการที่จำเป็นสำหรับการสร้าง PDF ใหม่หรือทำงานกับ PDF ที่มีอยู่.

รุ่นนี้มุ่งเน้นไปที่นักพัฒนาที่ต้องการการประมวลผล PDF ภายในโค้ดเบส Python โดยไม่ต้องใช้ไลเซนส์เชิงพาณิชย์: การสร้างรายงานและใบแจ้งหนี้, ระบบนำเข้าข้อมูลเอกสาร, ระบบอัตโนมัติการกรอกฟอร์ม, และบริการที่ต้องเรนเดอร์หน้าตา PDF เป็นภาพหรือสกัดข้อความสำหรับการทำดัชนีต่อไป โครงการอยู่ในขั้นตอนอัลฟ่าในขณะนี้ ดังนั้น API และความครอบคลุมของฟีเจอร์อาจเปลี่ยนแปลงก่อนการปล่อยรุ่นเสถียรแรก Python 3.11 หรือใหม่กว่าเป็นสิ่งจำเป็น.

สิ่งที่รวมอยู่

การสร้างและการโหลดเอกสาร

PdfDocument() สร้าง PDF ว่าง; PdfDocument(source, password=..., limits=...) โหลด PDF ที่มีอยู่จากพาธ, ไบต์ดิบ, หรือสตรีมไบนารี, และทำงานเทียบเท่ากับการเรียก PdfDocument().load_from(source, ...). ทั้งสองจะโยนข้อผิดพลาดเมื่อไฟล์หาย, ข้อมูลไม่ใช่ PDF, หรือรหัสผ่านหาย แทนที่จะส่งคืนเอกสารว่าง. PdfDocument เป็นตัวจัดการบริบท, ดังนั้นทรัพยากรจะถูกปล่อยโดยอัตโนมัติเมื่อบล็อก with สิ้นสุด.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    page.add_text("Generated by Aspose.PDF FOSS", x=72, y=720, font_size=14)
    document.save("report.pdf")

with Document("report.pdf") as document:
    print(f"Pages: {document.page_count}")
    print(f"PDF version: {document.version}")

การเพิ่มข้อความและรูปภาพ

Page.add_text วางข้อความ Unicode แบบ Standard‑14 หรือฝังไว้ที่ตำแหน่ง x/y ด้วย font_size ที่กำหนด; อาร์กิวเมนต์ font สามารถเป็น FontDescriptor, ไบต์ฟอนต์ดิบ, หรือเส้นทางไปยังฟอนต์ TrueType/OpenType สำหรับ Unicode ที่อยู่นอกการเข้ารหัส Standard‑14. Page.add_image วาง XObject ของรูปภาพดิบ, JPEG หรือ PNG บนหน้าในตำแหน่งและขนาดที่ระบุ.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    page.add_text(
        "Quarterly Summary",
        x=72,
        y=740,
        font_size=16,
    )
    page.add_image(
        "chart.png",
        x=72,
        y=420,
        width=300,
        height=200,
    )
    document.save("summary.pdf")

คำอธิบายประกอบ

แต่ละ Page เปิดเผยคำอธิบายของมันผ่าน page.annotations, ซึ่งเป็น AnnotationCollection. add(subtype, rect, contents, title, appearance_normal, properties) สร้างและแทรกคำอธิบายของประเภทย่อยมาตรฐานเช่น Square, Circle, Line, Highlight หรือ FreeText, คืนค่า Annotation. การเรียก generate_appearance() บนคำอธิบายที่คืนมาจะสังเคราะห์สตรีมการแสดงผลจากเรขาคณิตและคุณสมบัติของมัน.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    annotation = page.annotations.add(
        "Square",
        (100, 600, 300, 680),
        "Needs review",
        properties={"C": [1, 0, 0]},
    )
    annotation.generate_appearance()
    document.save("annotated.pdf")

ฟิลด์แบบฟอร์ม

document.form คืนค่า Form ของเอกสาร, ซึ่งสร้างฟิลด์ AcroForm โดยตรง: add_text_field(), add_checkbox(), add_radio_group(), add_list_box(), add_combo_box() และ add_push_button() แต่ละตัวรับชื่อฟิลด์, Page หรือดัชนีหน้าที่, และสี่เหลี่ยมตำแหน่ง, แล้วคืนค่า Field. การตั้งค่า field.value จะอัปเดตค่าของฟิลด์, และ form.flatten() จะทำให้รูปแบบการแสดงผลของทุกฟิลด์กลายเป็นเนื้อหาแบบคงที่บนหน้า.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    form = document.form
    field = form.add_text_field(
        "customer_name",
        page,
        (72, 700, 300, 720),
    )
    field.value = "Jane Doe"
    form.flatten()
    document.save("form.pdf")

การเข้ารหัส

Document.encrypt(user_password, owner_password, permissions) ปกป้องเอกสารด้วยรหัสผ่านผู้ใช้, รหัสผ่านเจ้าของ, และบิตมาสก์สิทธิ์, คืนค่า Document เดียวกันเพื่อการเชื่อมต่อต่อเนื่อง. Document.decrypt(password) ยกเลิกการดำเนินการ, และคุณสมบัติ is_encrypted รายงานสถานะปัจจุบัน. การโหลดเอกสารที่เข้ารหัสอีกครั้งต้องส่ง password= ไปยังคอนสตรัคเตอร์หรือไปยัง load_from().

from aspose_pdf import Document

with Document("report.pdf") as document:
    document.encrypt(user_password="user-pass", owner_password="owner-pass", permissions=0)
    document.save("encrypted.pdf")

with Document("encrypted.pdf", password="user-pass") as document:
    print(f"Encrypted: {document.is_encrypted}")

การสกัดข้อความ

PdfExtractor ผูกกับแหล่งข้อมูลด้วย bind_pdf(), จากนั้น extract_text() จะเดินผ่านหน้าของเอกสาร. get_text() คืนค่าข้อความที่สกัดทั้งหมดในครั้งเดียว, ในขณะที่ has_next_page_text() และ get_next_page_text() ทำการวนผลลัพธ์หน้าโดยหน้า. PdfExtractor ยังเป็นตัวจัดการบริบทด้วย.

from aspose_pdf import PdfExtractor

with PdfExtractor() as extractor:
    extractor.bind_pdf("report.pdf")
    extractor.extract_text()
    while extractor.has_next_page_text():
        print(extractor.get_next_page_text())

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

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

with Document() as document:
    page = document.pages.add()
    page.add_text(
        "Hello from Aspose.PDF FOSS!",
        x=72,
        y=720,
        font_size=18,
    )
    document.save("hello.pdf")

with Document("hello.pdf") as document:
    print(f"Pages: {document.page_count}")
    print(f"PDF version: {document.version}")

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

รูปแบบส่วนขยายอ่านเขียน
PDF.pdf✓✓
PNG.png—✓
TIFF.tiff—✓

PDF เป็นรูปแบบอินพุตและเอาต์พุตหลักของไลบรารี, อ่านผ่าน Document/load_from() และเขียนผ่าน Document.save. PNG และ TIFF เป็นผลลัพธ์การเรนเดอร์หน้าโดยที่สร้างโดย Page.render, Page.save_as_image, และ Document.save_page_as_image.


โอเพนซอร์สและการให้สิทธิ์

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


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

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