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

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_valid

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

  • Nhập mỗi lớp generated thông qua đường dẫn submodule đầy đủ của nó (from aspose_pdf.generated.document import Document, và tương tự cho generated.forms và generated.pdfa) — không bao giờ giả định rằng một import Document hoặc UnsignedContent đơ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/PdfAValidationResult như 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ằng add_error() tự mình — chúng không được tự động điền bởi Document.validate_pdfa().
  • Kiểm tra UnsignedContentAbsorber.has_extracted() trước khi gọi get_extracted() nếu bạn không chắc extract() đã được thực thi.
  • Ưu tiên aspose_pdf.Document API 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ânSử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ínhNhậ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.pdfaSử 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ề Noneextract() 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ànhBề 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ứcMô tả
Document.load_fromTải tài liệu từ đường dẫn tệp, byte, hoặc luồng
Document.saveLưu tài liệu vào một đích
Document.optimizeThực hiện tối ưu hóa chung, tùy chọn nén hình ảnh
Document.optimize_resourcesTối ưu hóa các tài nguyên dùng chung như phông chữ và hình ảnh
Document.encryptMã hóa tài liệu bằng một mật khẩu duy nhất
Document.change_passwordsThay đổi mật khẩu của tài liệu
Document.validateTrả về liệu tài liệu có hợp lệ về mặt cấu trúc hay không
Document.disposeGiải phóng các tài nguyên liên quan tới tài liệu
UnsignedContent.add_page / remove_pageThêm hoặc xóa một trang khỏi gói unsigned-content
UnsignedContent.add_form_field / remove_form_fieldThêm hoặc xóa một trường biểu mẫu khỏi gói unsigned-content
UnsignedContent.add_annotation / remove_annotationThêm hoặc xóa một chú thích khỏi gói unsigned-content
UnsignedContentAbsorber.extractTrích xuất unsigned content vào một thể hiện UnsignedContent
UnsignedContentAbsorber.get_extractedTrả về UnsignedContent đã trích xuất cuối cùng, nếu có
UnsignedContentAbsorber.has_extractedBá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_errorThêm một thông báo lỗi và đánh dấu kết quả là không hợp lệ
PdfAValidationResult.to_dictTrả về biểu diễn dạng từ điển của kết quả xác thực

Xem thêm

 Tiếng Việt