Aspose.PDF FOSS for Python Tính năng

Aspose.PDF FOSS for Python Tính năng

Tính năng Aspose.PDF FOSS cho Python

Aspose.PDF FOSS cho Python là một thư viện pure-Python để tạo, mở, sửa đổi và lưu tài liệu PDF. Trang này khảo sát các khu vực năng lực chính và các lớp đóng vai trò là điểm vào của chúng. Mỗi khu vực được trình bày chi tiết trên trang hướng dẫn dành cho nhà phát triển riêng.


Quản lý Tài liệu và Trang

Document là đối tượng gốc cho mọi thao tác. Khởi tạo nó không có đối số để bắt đầu một tài liệu mới, trống, hoặc gọi load_from() để đọc một tài liệu hiện có từ đường dẫn, byte, hoặc stream. document.pages cung cấp PageCollection có thể thay đổi, và Page.add_text đặt văn bản có vị trí trên một trang.

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")

Trích xuất Văn bản và Tìm kiếm

PdfExtractor gắn vào một tài liệu và lấy văn bản ra từng trang. bind_pdf() mở nguồn, extract_text() thực hiện việc trích xuất, và get_text() trả về kết quả đã tích lũy.

from aspose_pdf import PdfExtractor

extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()

Đối với tìm kiếm và thay thế có vị trí, theo từng đoạn, TextFragmentAbsorber hiển thị các đối tượng TextFragment khớp với text_search_options điều khiển độ nhạy chữ hoa/thường và khớp biểu thức chính quy.


Kết xuất Trang thành Hình ảnh

Document.save_page_as_image chuyển đổi một trang duy nhất trực tiếp thành tệp PNG hoặc TIFF với DPI có thể cấu hình. Đối với truy cập cấp thấp hơn, Page.render trả về một RasterizedPage chứa dữ liệu pixel thô thông qua get_pixel() và pixels.

from aspose_pdf import Document

document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)

Biểu mẫu và Trường Tương tác

Các trường AcroForm được quản lý thông qua Document.form, một mặt nạ Form. Form.add_text_field() (cũng như các tương đương hộp kiểm, nút radio, danh sách và hộp kết hợp) tạo một trường mới gắn với một trang và một hình chữ nhật widget, trả về một Field. Form.fields liệt kê mọi trường hiện có trong tài liệu.

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")

Bảo mật, Mã hoá và Chữ ký

Document.encrypt bảo vệ một tài liệu bằng mật khẩu người dùng (cần để mở) và mật khẩu chủ sở hữu (cần để thay đổi quyền); decrypt() và change_passwords() quản lý việc bảo vệ trên một tài liệu đã mở. is_encrypted báo cáo trạng thái hiện tại.

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")

Việc xác minh chữ ký số được PdfSignature.validate xử lý, nó trả về một ValidationResult mô tả trạng thái tin cậy và thu hồi, và SigningUtils cung cấp các công cụ hỗ trợ chứng chỉ và ký PKCS#7/CAdES.


PDF/A và PDF/UA Tuân thủ

Document.validate_pdfa thực hiện một kiểm tra tuân thủ PDF/A theo heuristic và trả về một PdfAValidationResult; convert_to_pdfa() cố gắng khắc phục tài liệu về mức đó. validate_pdfua() và auto_tag() cung cấp kiểm tra khả năng truy cập tương đương và gắn thẻ cây cấu trúc tự động cho 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")

Mẹo và Thực hành Tốt nhất

  • Sửa đổi đối tượng được trả về trực tiếp bởi document.pages, page.annotations hoặc document.form — các chỉnh sửa được thực hiện trên một bản sao riêng của trang hoặc trường sẽ không được phản ánh khi bạn gọi save().
  • PageCollection được đánh chỉ số bắt đầu từ 0 trong ràng buộc Python này (document.pages[0] là trang đầu tiên).
  • Bắt InvalidPasswordException và PdfParseException trước AsposePdfException rộng hơn khi gọi load_from() trên đầu vào không đáng tin cậy, để bạn có thể phản hồi khác nhau đối với mật khẩu sai so với tệp bị hỏng.
  • Gọi document.optimize() hoặc compress_streams() trước save() trên các tài liệu đã được chỉnh sửa mạnh để loại bỏ tài nguyên không dùng và giảm kích thước tệp.
  • Truyền một PdfLoadLimits có giới hạn vào load_from() khi xử lý PDF từ nguồn không đáng tin cậy, để giới hạn bộ nhớ và số lượng đối tượng trong quá trình phân tích.

Các Vấn đề Thông thường

Vấn đềNguyên nhânKhắc phục
save() tạo ra một tệp với các chỉnh sửa không thay đổiCác chỉnh sửa đã được thực hiện trên một trang, chú thích, hoặc bản sao trường thay vì đối tượng lấy được từ document.pages, annotations, hoặc formSửa đổi đối tượng được trả về trực tiếp bởi các bộ sưu tập đó
InvalidPasswordException trên load_from()Tài liệu được bảo vệ bằng mật khẩu và không có mật khẩu nào được cung cấp, hoặc mật khẩu được cung cấp không đúngNhập mật khẩu đúng: document.load_from(path, password="...")
validate_pdfa() vẫn báo lỗi phông chữ sau convert_to_pdfa()Không tìm thấy tệp phông chữ phù hợp trong font_lookup_directory đã cung cấpThêm phông chữ thiếu vào thư mục tra cứu, hoặc đăng ký nó với FontRepository trước khi chuyển đổi
Hình ảnh đã render trông rỗngChỉ số trang sai đã được truyền cho save_page_as_image() hoặc render()pages được đánh số bắt đầu từ 0 — xác nhận chỉ số, và kiểm tra xem PdfExtractor có trả về văn bản cho trang đó không
Trường được thêm bằng Form.add_text_field() không hiển thị trên trangHình chữ nhật widget nằm ngoài media_box của trangXác nhận các tọa độ hình chữ nhật nằm trong Page.media_box

FAQ

Liệu Aspose.PDF FOSS cho Python có phụ thuộc vào một công cụ PDF thương mại không?

Không. Đây là một công cụ PDF thuần Python được xây dựng từ đầu, phát hành dưới giấy phép MIT. Các phụ thuộc thời gian chạy duy nhất của nó là cryptography và asn1crypto, được sử dụng để mã hóa và xác thực chữ ký.

Tôi có thể tạo một PDF từ đầu thay vì mở một tệp hiện có không?

Có. Document() không có đối số sẽ tạo một tài liệu trống trong bộ nhớ; gọi document.pages.add() để thêm các trang trước khi lưu.

Tôi có thể render một trang sang định dạng raster nào?

Page.render và Document.save_page_as_image tạo ra đầu ra raster PNG hoặc TIFF; RasterizedPage trả về cũng cung cấp dữ liệu pixel thô thông qua get_pixel() và thuộc tính pixels.

Tôi nên bắt ngoại lệ nào cho các lỗi đặc thù của gói?

Bắt AsposePdfException. Mọi lỗi riêng của gói — bao gồm việc phân tích (PdfParseException), mật khẩu và mã hoá (PdfSecurityException, InvalidPasswordException), và các lỗi xác thực (PdfValidationException) — đều bắt nguồn từ nó.

Tôi nên đi đâu tiếp theo?

“Getting Started” bao gồm cài đặt, cấp phép và một ví dụ làm việc đầu tiên. Hướng dẫn dành cho nhà phát triển này tiếp tục với các chủ đề quản lý tài liệu như biểu mẫu, tệp đính kèm nhúng, khám phá phông chữ và việc tạo đề mục/dấu trang.


API Reference Tóm tắt

Lớp/Phương thứcMô tả
DocumentĐối tượng gốc — tạo, tải, lưu và quản lý một PDF
Document.pagesThuộc tính PageCollection có thể thay đổi của tài liệu
Document.load_from / Document.saveĐọc từ hoặc ghi vào một đường dẫn, byte, hoặc luồng
Document.encrypt / Document.decryptBảo mật bằng mật khẩu hoặc gỡ bỏ bảo vệ
Document.validate_pdfa / Document.convert_to_pdfaKiểm tra tuân thủ PDF/A dựa trên heuristic và chuyển đổi
Document.validate_pdfua() / Document.auto_tagKiểm tra khả năng truy cập PDF/UA và gắn thẻ tự động cấu trúc
Page.add_textThêm văn bản đã định vị vào một trang
Page.renderKết xuất một trang thành RasterizedPage
PdfExtractorTrích xuất văn bản trang và các tệp đính kèm nhúng
PdfFileEditorNối, tách, chèn và xóa các trang giữa các tệp
Form / Fieldcontainer AcroForm và các trường biểu mẫu riêng lẻ
PdfSignature / SigningUtilsXác thực và tạo chữ ký số
AsposePdfExceptionLớp cơ sở cho mọi ngoại lệ đặc thù của gói

Xem thêm

 Tiếng Việt