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, dan ICustomSignHash (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, dan PasswordRequiredException alih-alih RuntimeError (SIGNATUREPYTHON-26)
  • [Enhancement] Melempar AttributeError ketika 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 datetime serta Decimal ke .NET tanpa perubahan (SIGNATUREPYTHON-29)
  • [Enhancement] Memperbarui tag platform wheel ke manylinux_2_27 dan macosx_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_PATH diabaikan (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.

Sumber daya