Giới thiệu

document.py, mô-đun định nghĩa Aspose.PDF FOSS cho lớp Document của Python, mô tả nó như một lớp “đóng gói động cơ PDF gốc”. Cụ thể, động cơ đó là aspose_pdf.engine.simple_pdf.SimplePdf: Document.load_from tạo một thể hiện SimplePdf, và mọi thao tác ở cấp độ tài liệu — lưu, tối ưu, sửa chữa, mã hoá — đều ủy thác cho nó. Điều tương tự cũng đúng với việc kết xuất: Page.render và Document.render_page đều gọi vào aspose_pdf.engine.rasterizer.

Hầu hết mã ứng dụng không bao giờ cần nhìn sâu hơn Document và Page. Nhưng aspose_pdf.engine là một gói Python thông thường, có thể nhập, và một số thành phần phía dưới giao diện hữu ích riêng biệt: bộ raster hoá chuyển trang thành các pixel, các codec bộ lọc luồng nén và giải nén các luồng nội dung PDF, và các tiện ích mã hoá thực hiện các thuật toán AES-CBC và RC4 mà các trình xử lý bảo mật PDF dựa vào. Không giống như gói chính, các mô-đun con aspose_pdf.engine không được xuất lại từ aspose_pdf cấp cao nhất — ngoại lệ duy nhất là RasterizedPage, được nối qua aspose_pdf.visualization — vì vậy mọi thứ bên dưới đều được nhập bằng đường dẫn chấm đầy đủ, ví dụ from aspose_pdf.engine.filters import StreamDecoder.

Aspose.PDF FOSS cho Python là một gói Python, aspose-pdf-foss-for-python, được phát hành dưới giấy phép MIT, yêu cầu Python 3.11 trở lên. Tên mô-đun cấp cao nhất của nó là aspose_pdf. Gói lõi chỉ phụ thuộc vào cryptography và asn1crypto; các phần mở rộng tùy chọn thêm giải mã ảnh dựa trên Pillow, hỗ trợ phông WOFF2 dựa trên Brotli, và bố trí văn bản phức tạp dựa trên HarfBuzz.


Các tính năng chính

Kết xuất các trang với Động cơ Raster hoá

Document.render_page(page_index, dpi=..., scale=..., background=..., antialias=...) và đối tác Page.render của nó đều trả về một RasterizedPage — một raster RGB đóng gói được tạo ra bởi bộ raster hoá của động cơ. RasterizedPage cung cấp width, height, và các byte pixels thô, cộng thêm get_pixel() để tra cứu một pixel, to_png() / to_tiff() cho các byte đã mã hoá trong bộ nhớ, và save() để ghi trực tiếp một tệp .png hoặc .tif/.tiff. Làm việc với đối tượng trong bộ nhớ — thay vì chỉ lưu xuống đĩa — hữu ích khi người gọi muốn kiểm tra hoặc biến đổi các pixel trước khi quyết định có giữ chúng hay không.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    page.add_text("Rendered by the engine", x=72, y=700, font_size=18)

    raster = document.render_page(0, dpi=150)
    print(raster.width, raster.height)

    corner = raster.get_pixel(0, 0)
    print("top-left pixel:", corner)

    with open("page-0.png", "wb") as handle:
        handle.write(raster.to_png())
    raster.save("page-0.tiff")

Động cơ Bộ lọc Luồng

Nội dung PDF và các luồng đối tượng được nén bằng các bộ lọc có tên như FlateDecode và LZWDecode. aspose_pdf.engine.filters.StreamEncoder.encode(data, filters, decode_parms=None) và StreamDecoder.decode(data, filters, decode_parms, *, limits=None, max_output_bytes=None) thực hiện các phía mã hoá và giải mã của chuỗi bộ lọc đó — cùng các bộ mã mà động cơ sử dụng nội bộ khi ghi và đọc các luồng của tài liệu. Cả hai chấp nhận một tên bộ lọc duy nhất hoặc một danh sách cho các bộ lọc chuỗi, và StreamDecoder.decode() ném PdfValidationException khi gặp tên bộ lọc không nhận dạng được thay vì trả về các byte sai một cách âm thầm.

from aspose_pdf.engine.filters import StreamDecoder, StreamEncoder

raw = b"Sample content-stream payload.\n" * 40
compressed = StreamEncoder.encode(raw, "FlateDecode")
restored = StreamDecoder.decode(compressed, "FlateDecode", None)

assert restored == raw
print(f"{len(raw)} bytes -> {len(compressed)} bytes with FlateDecode")

Động cơ Mã hoá

aspose_pdf.engine.encryption.EncryptionUtils là lớp tiện ích phương thức tĩnh mà SimplePdf gọi vào cho mọi thao tác liên quan đến mã hoá: Document.encrypt, decrypt(), và change_passwords() đều được giải quyết thành các cuộc gọi EncryptionUtils phía dưới. Các phương thức của nó thực hiện AES-CBC và mã hoá RC4 trực tiếp (encrypt_aes_cbc, decrypt_aes_cbc, encrypt_rc4, decrypt_rc4), suy xuất khóa cho các phiên bản trình xử lý bảo mật tiêu chuẩn PDF (compute_owner_key_v4, compute_user_key_v4, compute_user_owner_keys_v6), và generate_file_id() cho ID ngẫu nhiên 16-byte mà tài liệu mới cần.

from aspose_pdf.engine.encryption import EncryptionUtils

key = b"0123456789ABCDEF"  # 16 bytes -> AES-128
ciphertext = EncryptionUtils.encrypt_aes_cbc(key, b"Reviewer notes: approved")
plaintext = EncryptionUtils.decrypt_aes_cbc(key, ciphertext)
assert plaintext == b"Reviewer notes: approved"

file_id = EncryptionUtils.generate_file_id()
print(file_id.hex())

Bắt đầu nhanh

Cài đặt gói, sau đó render một trang trực tiếp từ lớp động cơ trong một script duy nhất.

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("Engine-rendered page", x=72, y=740, font_size=20)

    raster = document.render_page(0, dpi=150)
    raster.save("engine-render.png")

    document.save("engine-quickstart.pdf")

print("Saved engine-quickstart.pdf and engine-render.png")

Định dạng được hỗ trợ

Định dạngPhần mở rộngĐọcGhi
PDFpdfCóCó
TIFFtiff-Vui lòng cun

Việc đọc và ghi PDF là Aspose.PDF FOSS cho chức năng cốt lõi của Python — cặp Document/SimplePdf động cơ tải và ghi tài liệu PDF trên mọi đường dẫn mã trong bài viết này. Document.render_page, Page.render, và RasterizedPage.to_png() / to_tiff() cũng tạo ra đầu ra PNG và TIFF raster; đây là các đầu ra raster hóa trang chứ không phải các định dạng tải tài liệu.


Mã nguồn mở & Giấy phép

Aspose.PDF FOSS cho Python được phát hành dưới giấy phép MIT: không có hạn chế sử dụng, không phí chạy thời gian, và không yêu cầu đăng ký cho việc sử dụng thương mại hoặc cá nhân. Mã nguồn được lưu trữ tại github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python, và gói được xuất bản trên PyPI với tên aspose-pdf-foss-for-python.


Bắt đầu

Tài nguyên liên quan