GroupDocs.Signature for Python 26.1 的最新資訊 (2026 年 1 月)
| ID | 類別 | 摘要 |
|---|---|---|
| SIGNATURENET‑5528 | ✨ 功能 | 圖像數位簽章支援與驗證(PNG 與 JPG 的隱寫 LSB 嵌入)。 |
| SIGNATURENET‑5445 | ✨ 功能 | 條碼與 QR Code 簽章預覽的自適應渲染 – 可明確控制寬度/高度。 |
| SIGNATURENET‑5479 | ✨ 功能 | 條碼與 QR Code 預覽圖像的旋轉支援。 |
| SIGNATURENET‑5478 | ✨ 功能 | 新增對 APNG 與 TGA 圖像格式的處理,可用於基於圖像的簽章。 |
| SIGNATURENET‑5500 | ⚡ 增強 | LINQ 風格的查詢最佳化,用於簽章搜尋與驗證(謂詞過濾)。 |
| SIGNATURENET‑5480 | ⚡ 增強 | 條碼/QR 預覽的背景透明度支援。 |
| SIGNATURENET‑5477 | ⚡ 增強 | 數位簽章的覆蓋圖像支援,可同時設定背景顏色(前景圖像旗標)。 |
| SIGNATURENET‑5422 | ⚡ 增強 | 移除不安全的加密演算法(RC2、DES、TripleDES 以及弱 AES 模式)。 |
| SIGNATURENET‑5555 | 🐞 錯誤修復 | 修正 Linux 上處理 DOC 檔案時 GeneratePreview() 的型別初始化例外。 |
以下為最具影響力變更的簡短技術說明。
1. 圖像數位簽章(隱寫術)
- 簽章隱藏於 PNG/JPG 像素的最低有效位元。
- 支援密碼保護、串流相容,且適用於任何尺寸 ≥ 8 × 8 px 的圖像。
為圖像簽章
import groupdocs.signature as gs
import groupdocs.signature.options as gso
input_file = "image.png"
output_file = "signed_image.png"
password = "MySecurePassword123"
# Sign the image
with gs.Signature(input_file) as signature:
sign_options = gso.ImageDigitalSignOptions()
sign_options.password = password
sign_result = signature.sign(output_file, sign_options)
if sign_result.succeeded and len(sign_result.succeeded) > 0:
print("Image signed successfully!")
print(f"Signatures added: {len(sign_result.succeeded)}")
驗證已簽署的圖像
import groupdocs.signature as gs
import groupdocs.signature.options as gso
signed_file = "signed_image.png"
password = "MySecurePassword123"
with gs.Signature(signed_file) as signature:
verify_options = gso.ImageDigitalVerifyOptions()
verify_options.password = password
verify_options.detection_threshold_percent = 75 # optional 0‑100%
verify_result = signature.verify(verify_options)
if verify_result.is_valid:
print("Digital signature is valid!")
print(f"Verified signatures: {len(verify_result.succeeded)}")
else:
print("Digital signature is invalid or not found.")
進階驗證(完整資料抽取)
with gs.Signature("signed_image.png") as signature:
verify_options = gso.ImageDigitalVerifyOptions()
verify_options.password = "MySecurePassword123"
verify_options.use_full_data_extraction = True
verify_options.detection_threshold_percent = 85
verify_result = signature.verify(verify_options)
if verify_result.is_valid and verify_options.detected_probability is not None:
print(f"Signature detected with {verify_options.detected_probability}% probability")
2. 條碼與 QR Code 預覽的自適應渲染
開發者現在可以為預覽生成指定精確的 width 與 height,消除先前「自動尺寸」的不一致。
import groupdocs.signature as gs
import groupdocs.signature.options as gso
import uuid
# QR code options
qr_sign_options = gso.QrCodeSignOptions("GROUP DOCS", gs.QrCodeTypes.QR)
qr_sign_options.width = 250
qr_sign_options.height = 270
qr_sign_options.fore_color = gs.Color.red
qr_sign_options.code_text_alignment = gs.CodeTextAlignment.BELOW
qr_sign_options.text = "GROUP DOCS"
# Preview generation
preview_options = gso.PreviewSignatureOptions(
qr_sign_options,
create_signature_stream, # user‑provided delegate
release_signature_stream # user‑provided delegate
)
preview_options.signature_id = str(uuid.uuid4())
preview_options.preview_format = gso.PreviewSignatureOptions.PreviewFormats.PNG
gs.Signature.generate_signature_preview(preview_options)
3. 條碼與 QR 預覽的旋轉支援
在條碼/QR 選項上設定 rotation_angle(度數)即可產生旋轉後的預覽。
import groupdocs.signature as gs
import groupdocs.signature.options as gso
import uuid
barcode_sign_options = gso.BarcodeSignOptions("GROUP DOCS", gs.BarcodeTypes.MaxiCode)
barcode_sign_options.width = 400
barcode_sign_options.height = 400
barcode_sign_options.fore_color = gs.Color.red
barcode_sign_options.code_text_alignment = gs.CodeTextAlignment.BELOW
barcode_sign_options.text = "GROUP DOCS"
barcode_sign_options.rotation_angle = 45 # rotate 45°
preview_options = gso.PreviewSignatureOptions(
barcode_sign_options,
create_signature_stream,
release_signature_stream
)
preview_options.signature_id = str(uuid.uuid4())
preview_options.preview_format = gso.PreviewSignatureOptions.PreviewFormats.PNG
gs.Signature.generate_signature_preview(preview_options)
4. 新增圖像格式支援 – APNG 與 TGA
APNG(動畫 PNG)與 TGA(Targa)檔案現在可作為 圖像簽章 使用,插入、預覽與驗證方式與 PNG/JPG 完全相同。
5. 條碼/QR 預覽的背景透明度
在條碼/QR 選項上設定 transparency 屬性(0 – 1)即可產生具有透明畫布的預覽。
barcode_sign_options = gso.BarcodeSignOptions("GROUP DOCS", gs.BarcodeTypes.Codabar)
barcode_sign_options.width = 400
barcode_sign_options.height = 400
barcode_sign_options.fore_color = gs.Color.red
barcode_sign_options.code_text_alignment = gs.CodeTextAlignment.BELOW
barcode_sign_options.text = "GROUP DOCS"
barcode_sign_options.transparency = 0.5 # 50 % transparent background
preview_options = gso.PreviewSignatureOptions(
barcode_sign_options,
create_signature_stream,
release_signature_stream
)
preview_options.signature_id = str(uuid.uuid4())
preview_options.preview_format = gso.PreviewSignatureOptions.PreviewFormats.PNG
gs.Signature.generate_signature_preview(preview_options)
6. 數位簽章的覆蓋圖像支援
PdfDigitalSignatureAppearance 現在同時支援覆蓋圖像 與 背景顏色,且不會遮蔽圖像。可透過 SignatureCustomAppearance.IsForegroundImage 控制圖層順序。
import groupdocs.signature as gs
import groupdocs.signature.options as gso
signature_image_path = "signature.png"
certificate_path = "JohnSmithCertificate.pfx"
input_pdf = "SampleDocument.pdf"
output_pdf = "SignedDocument.pdf"
with gs.Signature(input_pdf) as signature:
sign_options = gso.DigitalSignOptions(certificate_path)
sign_options.password = "1234567890"
sign_options.reason = "Document approval"
sign_options.contact = "John Smith"
sign_options.location = "Head Office"
# Visible signature placement
sign_options.visible = True
sign_options.left = 350
sign_options.top = 100
sign_options.width = 200
sign_options.height = 70
sign_options.image_file_path = signature_image_path
appearance = gso.PdfDigitalSignatureAppearance()
appearance.foreground = gs.Color.from_argb(50, gs.Color.brown)
appearance.font_family_name = "Times New Roman"
appearance.font_size = 12
appearance.background = gs.Color.from_argb(50, gs.Color.light_gray)
appearance.is_foreground_image = True # image on top of text
sign_options.appearance = appearance
sign_result = signature.sign(output_pdf, sign_options)
print(f"\nDocument signed successfully with {len(sign_result.succeeded)} signature(s).")
print(f"Signed file saved at: {output_pdf}")
7. 安全加固 – 移除不安全演算法
已從加密堆疊中 移除 RC2、DES、TripleDES 以及弱 AES 模式。僅保留符合 NIST 標準的現代演算法,提升簽署文件的預設安全性。
8. LINQ 風格的查詢最佳化
簽章 search 與 verify 現在接受 謂詞函式,可在執行繁重處理前先過濾簽章,降低記憶體使用並加速批次作業。
使用謂詞進行搜尋
import groupdocs.signature as gs
import groupdocs.signature.options as gso
import groupdocs.signature.domain as gsd
with gs.Signature("document.pdf") as signature:
search_options = [gso.TextSearchOptions()]
# Keep only text signatures that contain the word "Approved"
result = signature.search(search_options,
lambda sig: isinstance(sig, gsd.TextSignature) and "Approved" in sig.text)
for sig in result.signatures:
print(f"Found: {sig.text}")
使用謂詞進行驗證
with gs.Signature("signed_document.pdf") as signature:
verify_options = gso.TextVerifyOptions("John Smith")
# Verify only signatures on page 1
result = signature.verify(verify_options,
lambda sig: sig.page_number == 1)
print(f"Found {len(result)} verified signatures on page 1")
9. 修正 Linux 上的 DOC 預覽崩潰
GeneratePreview() 在 Linux 處理 Microsoft Word(.doc)檔案時不再拋出 TypeInitializerException,恢復跨平台預覽功能。
升級說明
pip install --upgrade groupdocs-signature-net
注意: 套件名稱
groupdocs-signature-net為 Python 透過 .NET 包裝器的名稱。
資源
- 完整發行說明:(如有官方發行說明頁面的連結請放此處)
- 文件說明: https://docs.groupdocs.com/signature/python/
- 社群與支援: https://forum.groupdocs.com/c/signature/10
敬請持續關注即將推出的版本,並留意官方部落格以取得效能技巧與最佳實踐指南。