我們很高興宣佈 GroupDocs.Signature for Python v26.10 已於 2026年10月 發佈。此重大版本將底層的 GroupDocs.Signature 引擎從 25.12 升級至 26.9,並將嵌入的 .NET 執行時從 .NET Core 3.1 迁移至 .NET 10.0.12。它引入了 Python 風格的回呼以處理預覽串流、日誌、資料加密與自訂簽名雜湊支援,新增對 Python 3.14 的完整相容性,並解決了 Linux 上的關鍵匯入問題。此版本包含兩項主要功能、五項增強與兩項錯誤修正。
此版本的新功能
- [Feature] 接受 Python 函式作為頁面和簽章預覽回呼 (SIGNATUREPYTHON-21)
- [Feature] 接受 Python 物件作為
ILogger、IDataEncryption與ICustomSignHash實作 (SIGNATUREPYTHON-22) - [Feature] 新增對 Python 3.14 的支援 (SIGNATUREPYTHON-23)
- [Enhancement] 將 GroupDocs.Signature 引擎從 25.12 更新至 26.9 (SIGNATUREPYTHON-24)
- [Enhancement] 將嵌入的 .NET 執行時從 .NET Core 3.1 更新至 .NET 10.0.12 (SIGNATUREPYTHON-25)
- [Enhancement] 拋出
GroupDocsSignatureException、IncorrectPasswordException與PasswordRequiredException取代RuntimeError(SIGNATUREPYTHON-26) - [Enhancement] 當程式碼為類別未定義的屬性賦值時拋出
AttributeError(SIGNATUREPYTHON-27) - [Enhancement] 重新命名 Python 名稱中分割 .NET 單字的成員 (
z_order→zorder、x_ad_es_type→xad_es_type) (SIGNATUREPYTHON-28) - [Enhancement] 依列表內容選擇重載,並將
datetime與Decimal值原樣傳遞給 .NET (SIGNATUREPYTHON-29) - [Enhancement] 更新 wheel 平台標籤為
manylinux_2_27與macosx_12_0,並移除 32 位元 Windows wheel (SIGNATUREPYTHON-30) - [Fix] Linux wheel 在當前發行版上無法匯入 (SIGNATUREPYTHON-31)
- [Fix]
GROUPDOCS_LIC_PATH被忽略 (SIGNATUREPYTHON-32)
公開 API 變更
升級者需要調整已重新命名的成員、新的例外類型,以及更新的平台標籤。屬性賦值現在會拋出 AttributeError,且回呼可以是純 Python 可呼叫物件。
新類別與成員
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:建構函式;先前沒有。PreviewSignatureOptions:建構函式;先前沒有。SearchResult:get_enumerator()、to_list()。Signature:dispose()。SignatureSettings:default_culture。WordProcessingSaveOptions:ooxml_compliance。
已重新命名
| 類別 | 舊名稱 | 新名稱 |
|---|---|---|
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 |
新功能
使用 Python 回呼產生預覽
PreviewOptions 現在可以使用純 Python 函式建構。create 回呼接收一個 page_data 物件,必須回傳可寫入的串流(檔案物件或 io.BytesIO)。release 回呼在影像寫入完成後被呼叫,接收相同的 page_data 與串流。
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))
Python 物件作為 logger、encryption 與 custom hash 回呼
純 Python 物件現在可以實作 ILogger、IDataEncryption 與 ICustomSignHash 介面。具備 trace、warning、error 方法的 logger 物件可傳遞給 SignatureSettings。具備 encode 與 decode 方法的加密物件可指派給 QR‑code 或 metadata 簽章的 options.data_encryption。自訂雜湊簽署者可以是函式或具備 custom_sign_hash 方法的物件,並由 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)
支援 Python 3.14
wheel 現在宣告 python_requires=">=3.5,<3.15",且每個平台僅提供一個 wheel,涵蓋 Python 3.5 – 3.14。無需程式碼變更;相同的匯入與使用方式在新版直譯器上皆可運作。
程式碼範例
請參考上方「新功能」章節中的程式碼範例,了解如何使用 Python 回呼產生預覽以及實作自訂 logger / encryption。
如何取得更新
PyPI
透過 PyPI 升級至最新的 GroupDocs.Signature for Python 套件: groupdocs-signature-net 26.10.0
安裝指令:
pip install groupdocs-signature-net==26.10.0
直接下載
直接從 GroupDocs.Signature for Python v26.10 release page 下載 wheel 套件。