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,IDataEncryptionvà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,IncorrectPasswordExceptionvàPasswordRequiredExceptionthay vìRuntimeError(SIGNATUREPYTHON-26) - [Enhancement] Ném
AttributeErrorkhi 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ị
datetimevàDecimalsang .NET mà không thay đổi (SIGNATUREPYTHON-29) - [Enhancement] Cập nhật thẻ nền tảng wheel thành
manylinux_2_27và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_PATHbị 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.