Kami dengan senang hati mengumumkan rilis GroupDocs.Signature for Python v26.10, tersedia sejak Oktober 2026. Rilis utama ini meningkatkan mesin GroupDocs.Signature yang mendasarinya dari 25.12 ke 26.9 dan memigrasikan runtime .NET yang disematkan dari .NET Core 3.1 ke .NET 10.0.12. Rilis ini memperkenalkan callback gaya Python untuk alur pratinjau, logger, enkripsi data, dan dukungan hash tanda tangan khusus, menambahkan kompatibilitas penuh dengan Python 3.14, serta menyelesaikan masalah impor kritis pada Linux. Rilis ini mencakup dua fitur utama, lima peningkatan, dan dua perbaikan bug.
Apa yang baru dalam rilis ini
- [Feature] Menerima fungsi Python sebagai callback pratinjau halaman dan tanda tangan (SIGNATUREPYTHON-21)
- [Feature] Menerima objek Python sebagai implementasi
ILogger,IDataEncryption, danICustomSignHash(SIGNATUREPYTHON-22) - [Feature] Menambahkan dukungan untuk Python 3.14 (SIGNATUREPYTHON-23)
- [Enhancement] Memperbarui mesin GroupDocs.Signature dari 25.12 ke 26.9 (SIGNATUREPYTHON-24)
- [Enhancement] Memperbarui runtime .NET yang disematkan dari .NET Core 3.1 ke .NET 10.0.12 (SIGNATUREPYTHON-25)
- [Enhancement] Melempar
GroupDocsSignatureException,IncorrectPasswordException, danPasswordRequiredExceptionalih-alihRuntimeError(SIGNATUREPYTHON-26) - [Enhancement] Melempar
AttributeErrorketika kode menetapkan atribut yang tidak dimiliki kelas (SIGNATUREPYTHON-27) - [Enhancement] Mengganti nama anggota yang nama Python‑nya memisahkan kata‑kata .NET (
z_order→zorder,x_ad_es_type→xad_es_type) (SIGNATUREPYTHON-28) - [Enhancement] Memilih overload berdasarkan isi daftar, dan meneruskan nilai
datetimesertaDecimalke .NET tanpa perubahan (SIGNATUREPYTHON-29) - [Enhancement] Memperbarui tag platform wheel ke
manylinux_2_27danmacosx_12_0, serta menghapus wheel Windows 32‑bit (SIGNATUREPYTHON-30) - [Fix] Wheel Linux tidak dapat diimpor pada distribusi saat ini (SIGNATUREPYTHON-31)
- [Fix]
GROUPDOCS_LIC_PATHdiabaikan (SIGNATUREPYTHON-32)
Perubahan API Publik
Pengguna yang melakukan upgrade perlu menyesuaikan diri dengan anggota yang telah diganti nama, tipe pengecualian baru, dan tag platform yang diperbarui. Penetapan atribut kini melempar AttributeError dan callback dapat berupa callable Python biasa.
Kelas dan anggota baru
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: sebuah konstruktor; sebelumnya tidak ada.PreviewSignatureOptions: sebuah konstruktor; sebelumnya tidak ada.SearchResult:get_enumerator(),to_list().Signature:dispose().SignatureSettings:default_culture.WordProcessingSaveOptions:ooxml_compliance.
Nama yang Diubah
| Kelas | Nama lama | Nama baru |
|---|---|---|
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 |
Fitur baru
Pembuatan pratinjau dengan callback Python
PreviewOptions kini dapat dibuat dengan fungsi Python biasa. Callback create menerima objek page_data dan harus mengembalikan stream yang dapat ditulis (objek file atau io.BytesIO). Callback release dipanggil setelah gambar ditulis dan menerima page_data serta stream yang sama.
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))
Objek Python sebagai logger, enkripsi, dan callback hash khusus
Objek Python biasa kini dapat mengimplementasikan antarmuka ILogger, IDataEncryption, dan ICustomSignHash. Objek logger dengan metode trace, warning, dan error dapat diberikan ke SignatureSettings. Objek enkripsi dengan metode encode dan decode dapat ditetapkan ke options.data_encryption pada tanda tangan QR‑code atau metadata. Penandatangan hash khusus dapat berupa fungsi atau objek dengan metode custom_sign_hash dan digunakan oleh 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)
Dukungan untuk Python 3.14
Wheel kini mendeklarasikan python_requires=">=3.5,<3.15" dan satu wheel per platform mencakup Python 3.5 – 3.14. Tidak ada perubahan kode yang diperlukan; impor dan penggunaan yang sama berfungsi pada interpreter yang lebih baru.
Contoh kode
Lihat bagian “Fitur baru” di atas untuk contoh kode yang berfungsi, yang memperlihatkan callback Python untuk pembuatan pratinjau serta implementasi logger/enkripsi khusus.
Cara mendapatkan pembaruan
PyPI
Tingkatkan ke paket GroupDocs.Signature for Python terbaru melalui PyPI: groupdocs-signature-net 26.10.0
Instal dengan:
pip install groupdocs-signature-net==26.10.0
Unduhan langsung
Unduh paket wheel secara langsung dari halaman rilis GroupDocs.Signature for Python v26.10.