Chúng tôi rất vui mừng thông báo việc phát hành GroupDocs.Signature for Python v26.10, có sẵn từ tháng 10 năm 2026. Bản phát hành lớn này nâng cấp engine GroupDocs.Signature nền tảng từ 25.12 lên 26.9 và di chuyển runtime .NET nhúng từ .NET Core 3.1 sang .NET 10.0.12. Nó giới thiệu các callback kiểu Python cho luồng preview, logger, mã hoá dữ liệu và hỗ trợ custom sign hash, thêm khả năng tương thích đầy đủ với Python 3.14, và giải quyết các vấn đề import nghiêm trọng trên Linux. Bản phát hành này bao gồm hai tính năng chính, năm cải tiến và hai bản sửa lỗi.

Những gì mới trong phiên bản này

  • [Feature] Chấp nhận các hàm Python làm callback cho việc tạo trước trang và chữ ký (SIGNATUREPYTHON-21)
  • [Feature] Chấp nhận các đối tượng Python làm triển khai ILogger, IDataEncryption và ICustomSignHash (SIGNATUREPYTHON-22)
  • [Feature] Thêm hỗ trợ cho Python 3.14 (SIGNATUREPYTHON-23)
  • [Enhancement] Cập nhật engine GroupDocs.Signature từ 25.12 lên 26.9 (SIGNATUREPYTHON-24)
  • [Enhancement] Cập nhật runtime .NET nhúng từ .NET Core 3.1 lên .NET 10.0.12 (SIGNATUREPYTHON-25)
  • [Enhancement] Ném GroupDocsSignatureException, IncorrectPasswordException và PasswordRequiredException thay vì RuntimeError (SIGNATUREPYTHON-26)
  • [Enhancement] Ném AttributeError khi mã gán một thuộc tính mà lớp không có (SIGNATUREPYTHON-27)
  • [Enhancement] Đổi tên các thành viên mà tên Python tách các từ .NET (z_order → zorder, x_ad_es_type → xad_es_type) (SIGNATUREPYTHON-28)
  • [Enhancement] Chọn overload dựa trên nội dung của danh sách, và truyền các giá trị datetime và Decimal sang .NET mà không thay đổi (SIGNATUREPYTHON-29)
  • [Enhancement] Cập nhật thẻ nền tảng wheel thành manylinux_2_27 và macosx_12_0, và loại bỏ wheel Windows 32-bit (SIGNATUREPYTHON-30)
  • [Fix] Wheel Linux không thể được import trên các bản phân phối hiện tại (SIGNATUREPYTHON-31)
  • [Fix] GROUPDOCS_LIC_PATH bị bỏ qua (SIGNATUREPYTHON-32)

Các thay đổi API công cộng

Các nhà nâng cấp cần điều chỉnh các thành viên đã đổi tên, các loại ngoại lệ mới, và các thẻ nền tảng đã cập nhật. Việc gán thuộc tính giờ sẽ ném AttributeError và các callback có thể là các callable Python thuần.

Các lớp và thành viên mới

  • groupdocs.signature: ProcessCompleteEventHandler, ProcessProgressEventHandler, ProcessStartEventHandler.
  • groupdocs.signature.domain: OoxmlCompliance.
  • groupdocs.signature.options: CreateSignatureStream, ReleaseSignatureStream, PreviewOptions.CreateDocPageStream, PreviewOptions.ReleaseDocPageStream, PreviewOptions.PreviewFormats, PreviewSignatureOptions.PreviewFormats.
  • ConsoleLogger: error().
  • DigitalSignOptions: allow_expired, allow_not_yet_valid.
  • DigitalSignature: certificate_store_location, certificate_store_name.
  • FileLogger: error().
  • ILogger: error().
  • ImageSignOptions: dispose().
  • LoadOptions: skip_external_resources, whitelisted_resources.
  • Mailmark2D: class_.
  • MetadataSignatureCollection: append(), get().
  • PreviewOptions: một constructor; trước đây không có.
  • PreviewSignatureOptions: một constructor; trước đây không có.
  • SearchResult: get_enumerator(), to_list().
  • Signature: dispose().
  • SignatureSettings: default_culture.
  • WordProcessingSaveOptions: ooxml_compliance.

Được đổi tên

Lớp Tên cũ Tên mới
BarcodeTypes DATA_LOGIC_2OF_5 DATA_LOGIC_2OF5
BarcodeTypes GS1_CODE_128 GS1_CODE128
BarcodeTypes GS1_MICRO_PDF_417 GS1_MICRO_PDF417
BarcodeTypes IATA2OF_5 IATA2OF5
BarcodeTypes INTERLEAVED_2OF_5 INTERLEAVED_2OF5
BarcodeTypes MATRIX_2OF_5 MATRIX_2OF5
BarcodeTypes STANDARD_2OF_5 STANDARD_2OF5
BarcodeTypes UPCA_GS_1_CODE_128_COUPON UPCA_GS1_CODE_128_COUPON
BarcodeTypes UPCA_GS_1_DATABAR_COUPON UPCA_GS1_DATABAR_COUPON
DigitalSignature x_ad_es_type xad_es_type
FileType G_ZIP GZIP
FileType L_ZIP LZIP
XAdESType X_AD_ES XAD_ES
DigitalSignOptions x_ad_es_type xad_es_type
JpegCompressionColorMode Y_CB_CR YCB_CR
SignOptions z_order zorder
PdfTextAnnotationAppearance h_corner_radius hcorner_radius
PdfTextAnnotationAppearance v_corner_radius vcorner_radius

Tính năng mới

Tạo preview với callbacks Python

PreviewOptions giờ có thể được khởi tạo với các hàm Python thuần. Callback create nhận một đối tượng page_data và phải trả về một stream có thể ghi (đối tượng file hoặc io.BytesIO). Callback release được gọi sau khi hình ảnh được ghi và nhận cùng page_data và stream.

from groupdocs.signature import Signature
from groupdocs.signature.options import PreviewOptions

def create_page_stream(page_data):
    return open(f"page-{page_data.page_number}.png", "wb")

def release_page_stream(page_data, page_stream):
    page_stream.close()

with Signature("document.pdf") as signature:
    signature.generate_preview(PreviewOptions(create_page_stream, release_page_stream))

Đối tượng Python làm logger, mã hoá và callbacks hash tùy chỉnh

Các đối tượng Python thuần giờ có thể triển khai các giao diện ILogger, IDataEncryption, và ICustomSignHash. Một đối tượng logger có các phương thức trace, warning, và error có thể được truyền vào SignatureSettings. Một đối tượng mã hoá có các phương thức encode và decode có thể được gán cho options.data_encryption trên các chữ ký QR-code hoặc metadata. Một hàm hoặc đối tượng có phương thức custom_sign_hash có thể được dùng làm custom hash signer và được sử dụng bởi DigitalSignOptions.custom_sign_hash.

import base64

from groupdocs.signature import Signature, SignatureSettings
from groupdocs.signature.options import QrCodeSignOptions


class SimpleLogger:
    def trace(self, message):
        print("TRACE:", message)

    def warning(self, message):
        print("WARN:", message)

    def error(self, message, exception=None):
        print("ERROR:", message, exception)


class Base64Encryption:
    def encode(self, source):
        return base64.b64encode(source.encode()).decode()

    def decode(self, source):
        return base64.b64decode(source).decode()


options = QrCodeSignOptions("Private text")
options.data_encryption = Base64Encryption()

with Signature("document.pdf", SignatureSettings(logger=SimpleLogger())) as signature:
    signature.sign("signed.pdf", options)

Hỗ trợ Python 3.14

Wheel hiện khai báo python_requires=">=3.5,<3.15" và một wheel duy nhất cho mỗi nền tảng bao phủ Python 3.5 – 3.14. Không cần thay đổi mã; việc import và sử dụng vẫn hoạt động trên trình thông dịch mới hơn.

Ví dụ mã

Xem phần “Tính năng mới” ở trên để có các ví dụ mã hoạt động minh họa các callback Python cho việc tạo preview và các triển khai logger/mã hoá tùy chỉnh.

Cách nhận bản cập nhật

PyPI

Nâng cấp lên gói GroupDocs.Signature for Python mới nhất qua PyPI: groupdocs-signature-net 26.10.0

Cài đặt bằng:

pip install groupdocs-signature-net==26.10.0

Tải trực tiếp

Tải các gói wheel trực tiếp từ GroupDocs.Signature for Python v26.10 release page.

Tài nguyên