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.annotationshoặcdocument.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ọisave(). 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
InvalidPasswordExceptionvàPdfParseExceptiontrướcAsposePdfExceptionrộng hơn khi gọiload_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ặccompress_streams()trướcsave()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
PdfLoadLimitscó giới hạn vàoload_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ân | Khắc phục |
|---|---|---|
save() tạo ra một tệp với các chỉnh sửa không thay đổi | Cá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 form | Sử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 đúng | Nhậ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ấp | Thê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ỗng | Chỉ 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 trang | Hình chữ nhật widget nằm ngoài media_box của trang | Xá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ức | Mô tả |
|---|---|
Document | Đối tượng gốc — tạo, tải, lưu và quản lý một PDF |
Document.pages | Thuộ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.decrypt | Bảo mật bằng mật khẩu hoặc gỡ bỏ bảo vệ |
Document.validate_pdfa / Document.convert_to_pdfa | Kiểm tra tuân thủ PDF/A dựa trên heuristic và chuyển đổi |
Document.validate_pdfua() / Document.auto_tag | Kiểm tra khả năng truy cập PDF/UA và gắn thẻ tự động cấu trúc |
Page.add_text | Thêm văn bản đã định vị vào một trang |
Page.render | Kết xuất một trang thành RasterizedPage |
PdfExtractor | Trích xuất văn bản trang và các tệp đính kèm nhúng |
PdfFileEditor | Nối, tách, chèn và xóa các trang giữa các tệp |
Form / Field | container AcroForm và các trường biểu mẫu riêng lẻ |
PdfSignature / SigningUtils | Xác thực và tạo chữ ký số |
AsposePdfException | Lớp cơ sở cho mọi ngoại lệ đặc thù của gói |