Làm việc với API Tương thích được tạo ra
Làm việc với API Tương thích được tạo ra
Aspose.PDF FOSS cho Python cung cấp một bề mặt API thứ hai, nhỏ hơn dưới gói con aspose_pdf.generated: generated.document.Document, generated.forms.UnsignedContent và UnsignedContentAbsorber, và generated.pdfa.PdfAValidateOptions và PdfAValidationResult. Mỗi lớp này có cùng tên với một lớp trong API chính của thư viện (aspose_pdf.Document, aspose_pdf.UnsignedContent, và các lớp khác), nhưng chúng là các lớp riêng biệt, được định nghĩa độc lập với bề mặt phương thức giảm bớt. Chúng tồn tại như một lớp tương thích độc lập — luôn import chúng bằng đường dẫn aspose_pdf.generated.* đầy đủ để bạn biết mình đang gọi lớp nào.
Vòng đời tài liệu thông qua Document được tạo ra
generated.document.Document hỗ trợ vòng đời tài liệu cốt lõi: tải, lưu, tối ưu hoá cơ bản, mã hoá và xác thực. Hầu hết các thuộc tính của nó được gán kiểu Any thay vì các kiểu phong phú hơn được công bố trên lớp Document chính.
from aspose_pdf.generated.document import Document
doc = Document()
doc.load_from("input.pdf")
doc.optimize(compress_images=True)
doc.optimize_resources(remove_unused=True)
if doc.validate():
doc.save("output.pdf")
doc.dispose()Mã hoá và việc thay đổi mật khẩu sử dụng dạng mật khẩu đơn thay vì các mật khẩu người dùng/chủ sở hữu riêng biệt của Document.encrypt chính:
from aspose_pdf.generated.document import Document
doc = Document()
doc.load_from("input.pdf")
doc.encrypt("secret")
doc.change_passwords("secret", "new-secret")
doc.save("protected.pdf")Trích xuất nội dung chưa ký
generated.forms.UnsignedContentAbsorber trích xuất các trang, trường biểu mẫu và chú thích của một tài liệu chưa được ký vào một container UnsignedContent. Gọi extract() để thực hiện việc trích xuất, sau đó dùng get_extracted() hoặc has_extracted() để kiểm tra kết quả mà không cần chạy lại.
from aspose_pdf.generated.document import Document
from aspose_pdf.generated.forms import UnsignedContentAbsorber
doc = Document()
doc.load_from("input.pdf")
absorber = UnsignedContentAbsorber()
extracted = absorber.extract()
print(len(extracted.pages), len(extracted.form_fields), extracted.annotations)
if absorber.has_extracted():
same_result = absorber.get_extracted()
absorber.reset()UnsignedContent cũng có thể được xây dựng và điền dữ liệu trực tiếp, độc lập với một absorber:
from aspose_pdf.generated.forms import UnsignedContent
bundle = UnsignedContent()
bundle.add_page(some_page)
bundle.add_form_field(some_field)
bundle.add_annotation(some_annotation)
bundle.remove_page(some_page)
bundle.reset()PDF/A các tùy chọn và kết quả xác thực
generated.pdfa.PdfAValidateOptions và PdfAValidationResult là một cặp tùy chọn/kết quả độc lập cho các quy trình xác thực kiểu PDF/A. Chúng không phải là các lớp được trả về bởi Document.validate_pdfa() của API chính hoặc được tiêu thụ bởi PdfAValidator.process() — những thứ đó sử dụng các lớp PdfAValidateOptions và PdfAValidationResult riêng, được định nghĩa riêng biệt, với một giao diện phong phú hơn (level, warnings, is_heuristic, và một font_lookup_directory).
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
options = PdfAValidateOptions()
options.add_input()
options.set_option("level", "1b")
stored_options = options.get_options()
result = PdfAValidationResult()
result.add_error("Font not embedded: Arial")
summary = result.to_dict()
is_valid = result.is_validMẹo và Thực hành tốt nhất
- Nhập mỗi lớp
generatedthông qua đường dẫn submodule đầy đủ của nó (from aspose_pdf.generated.document import Document, và tương tự chogenerated.formsvàgenerated.pdfa) — không bao giờ giả định rằng một importDocumenthoặcUnsignedContentđơn giản sẽ giải quyết đến phiên bản tương thích. - Đặt cho lớp đã nhập một tên địa phương phân biệt bất cứ khi nào một tệp cũng sử dụng API chính trong cùng mô-đun, để hai giao diện vẫn tách biệt rõ ràng ở mọi vị trí gọi.
- Xem
generated.pdfa.PdfAValidateOptions/PdfAValidationResultnhư một cặp độc lập: xây dựng các tùy chọn, thực thi logic xác thực của riêng bạn, và ghi lại kết quả bằngadd_error()tự mình — chúng không được tự động điền bởiDocument.validate_pdfa(). - Kiểm tra
UnsignedContentAbsorber.has_extracted()trước khi gọiget_extracted()nếu bạn không chắcextract()đã được thực thi. - Ưu tiên
aspose_pdf.DocumentAPI chính cho mã mới trừ khi bạn thực sự cần bề mặt giảm, tương thích được tạo ra.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Sửa |
|---|---|---|
Các phương thức Document sai được cung cấp (thiếu pages, form, xmp_metadata, và các tương tự) | Đã nhập generated.document.Document thay vì aspose_pdf.Document chính | Nhập lớp chính (import aspose_pdf; aspose_pdf.Document()) trừ khi bạn muốn giao diện tối giản |
PdfAValidateOptions/PdfAValidationResult từ generated.pdfa không hoạt động với PdfAValidator.process() | Phương thức PdfAValidator của API chính yêu cầu các lớp PdfAValidateOptions/PdfAValidationResult riêng của nó, không phải các phiên bản generated.pdfa | Sử dụng các lớp PdfAValidateOptions/PdfAValidationResult được xuất ra từ aspose_pdf cho các quy trình PdfAValidator |
get_extracted() trả về None | extract() chưa bao giờ được gọi trên instance UnsignedContentAbsorber đó | Gọi extract() trước get_extracted(), hoặc kiểm tra has_extracted() trước |
Các thuộc tính trên generated.document.Document có kiểu Any và không hỗ trợ tự động hoàn thành | Bề mặt được tạo ra đổi kiểu tĩnh lấy một API nhỏ hơn, đơn giản hơn | Ép kiểu hoặc ghi chú kiểu mong đợi tại vị trí gọi, hoặc chuyển sang lớp Document chính để có kiểu phong phú hơn |
FAQ
Liệu aspose_pdf.generated có phải là một stub hay placeholder không?
Không. Nó là một subpackage thực, có thể import được với các lớp hoạt động — Document, UnsignedContent, UnsignedContentAbsorber, PdfAValidateOptions và PdfAValidationResult — nó chỉ là một bề mặt nhỏ hơn, độc lập so với API chính của thư viện.
Tại sao generated.document.Document lại có cùng tên với aspose_pdf.Document?
Chúng là hai lớp được định nghĩa độc lập nhưng tình cờ có cùng tên. Nhập khẩu từ aspose_pdf.generated.document sẽ cung cấp cho bạn phiên bản tương thích; nhập khẩu aspose_pdf.Document (hoặc from aspose_pdf import Document) sẽ cung cấp cho bạn phiên bản chính.
Tôi có thể truyền một generated.pdfa.PdfAValidateOptions cho PdfAValidator.process() không?
Không. PdfAValidator.process() là một phần của API chính và mong đợi lớp PdfAValidateOptions riêng của API chính, lớp này có chữ ký phương thức khác (add_input(source) thay vì add_input() không có đối số).
Liệu UnsignedContentAbsorber.extract() có cần một đối số Document không?
Không. extract() không nhận bất kỳ đối số nào trong lớp tương thích được tạo; hãy tạo bộ hấp thụ và gọi extract() trực tiếp.
API Reference Tóm tắt
| Lớp / Phương thức | Mô tả |
|---|---|
Document.load_from | Tải tài liệu từ đường dẫn tệp, byte, hoặc luồng |
Document.save | Lưu tài liệu vào một đích |
Document.optimize | Thực hiện tối ưu hóa chung, tùy chọn nén hình ảnh |
Document.optimize_resources | Tối ưu hóa các tài nguyên dùng chung như phông chữ và hình ảnh |
Document.encrypt | Mã hóa tài liệu bằng một mật khẩu duy nhất |
Document.change_passwords | Thay đổi mật khẩu của tài liệu |
Document.validate | Trả về liệu tài liệu có hợp lệ về mặt cấu trúc hay không |
Document.dispose | Giải phóng các tài nguyên liên quan tới tài liệu |
UnsignedContent.add_page / remove_page | Thêm hoặc xóa một trang khỏi gói unsigned-content |
UnsignedContent.add_form_field / remove_form_field | Thêm hoặc xóa một trường biểu mẫu khỏi gói unsigned-content |
UnsignedContent.add_annotation / remove_annotation | Thêm hoặc xóa một chú thích khỏi gói unsigned-content |
UnsignedContentAbsorber.extract | Trích xuất unsigned content vào một thể hiện UnsignedContent |
UnsignedContentAbsorber.get_extracted | Trả về UnsignedContent đã trích xuất cuối cùng, nếu có |
UnsignedContentAbsorber.has_extracted | Báo cáo liệu việc trích xuất đã được thực hiện hay chưa |
PdfAValidateOptions.add_input | Đăng ký một nguồn đầu vào để xác thực |
PdfAValidateOptions.set_option / get_options | Đặt hoặc đọc các giá trị tùy chọn xác thực |
PdfAValidationResult.add_error | Thêm một thông báo lỗi và đánh dấu kết quả là không hợp lệ |
PdfAValidationResult.to_dict | Trả về biểu diễn dạng từ điển của kết quả xác thực |