Tandatangani Dokumen PDF
Aspose.PDF for Python via .NET menyediakan PdfFileSignature antarmuka untuk menerapkan tanda tangan digital pada dokumen PDF yang ada. Dengan menggunakan file sertifikat, Anda dapat menandatangani dokumen secara programatis, menempatkan tanda tangan pada halaman, menetapkan metadata tanda tangan, dan menyesuaikan cara tampilan tanda tangan.
Artikel ini menunjukkan beberapa alur kerja penandatanganan yang umum:
- Buat dan ikat sebuah
PdfFileSignatureobjek ke PDF masukan. - Konfigurasikan sertifikat penandatangan.
- Terapkan tanda tangan digital pada halaman target.
- Opsional, tetapkan nama tanda tangan dan penampilan yang terlihat.
- Simpan PDF yang telah ditandatangani.
Siapkan pembantu penandatanganan yang dapat digunakan kembali
Sebelum menerapkan tanda tangan digital pada PDF, ada baiknya menyiapkan sekumpulan kecil fungsi pembantu yang dapat digunakan kembali. Pembantu ini menginisialisasi penangan tanda tangan, menentukan area tanda tangan yang terlihat, mengonfigurasi sertifikat, dan membangun objek tanda tangan PKCS#7 yang dapat digunakan kembali sehingga contoh penandatanganan di bawah tetap mandiri dan lebih mudah diikuti.
import aspose.pdf as ap
import aspose.pdf.facades as pdf_facades
import aspose.pydrawing as apd
DEFAULT_CERTIFICATE_PASSWORD = "Aspose2021"
DEFAULT_SIGNATURE_NAME = "Signature1"
def create_pdf_file_signature(infile):
pdf_signature = pdf_facades.PdfFileSignature()
pdf_signature.bind_pdf(infile)
return pdf_signature
def create_signature_rectangle():
return apd.Rectangle(10, 10, 200, 60)
def configure_signature_certificate(
pdf_signature, certificate_path, certificate_password=DEFAULT_CERTIFICATE_PASSWORD
):
pdf_signature.set_certificate(certificate_path, certificate_password)
def create_pkcs7_signature(
certificate_path, certificate_password=DEFAULT_CERTIFICATE_PASSWORD
):
signature = ap.forms.PKCS7(certificate_path, certificate_password)
signature.reason = "Document approval"
signature.contact_info = "qa@example.com"
signature.location = "New York, USA"
signature.authority = "Aspose.PDF Example"
return signature
def create_custom_signature_appearance():
appearance = ap.forms.SignatureCustomAppearance()
appearance.font_family_name = "Arial"
appearance.font_size = 10
appearance.show_contact_info = True
appearance.show_location = True
appearance.show_reason = True
return appearance
Tandatangani PDF dengan parameter sertifikat dasar
Pendekatan ini mengonfigurasi sertifikat langsung pada PdfFileSignature objek. Ini berguna ketika Anda menginginkan alur penandatanganan yang sederhana dengan metadata tanda tangan standar dan tanpa pengelolaan objek tanda tangan terpisah.
import aspose.pdf.facades as pdf_facades
import sys
from os import path
def sign_pdf_with_basic_parameters(infile, outfile, certificate_path):
pdf_signature = create_pdf_file_signature(infile)
try:
configure_signature_certificate(pdf_signature, certificate_path)
pdf_signature.sign(
1,
"Document approval",
"qa@example.com",
"New York, USA",
False,
create_signature_rectangle(),
)
pdf_signature.save(outfile)
finally:
pdf_signature.close()
Tandatangani PDF dengan objek PKCS7
Gunakan sebuah PKCS7 objek ketika Anda perlu menyiapkan tanda tangan terlebih dahulu dan kemudian melewatkannya ke panggilan penandatanganan. Pola ini memberi Anda kontrol lebih besar atas pengaturan tanda tangan dan merupakan dasar yang baik untuk alur kerja yang lebih maju.
import aspose.pdf.facades as pdf_facades
import sys
from os import path
def sign_pdf_with_certificate_object(infile, outfile, certificate_path):
pdf_signature = create_pdf_file_signature(infile)
try:
signature = create_pkcs7_signature(certificate_path)
pdf_signature.sign(1, False, create_signature_rectangle(), signature)
pdf_signature.save(outfile)
finally:
pdf_signature.close()
Tandatangani PDF dengan tanda tangan bernama
Jika alur kerja dokumen Anda bergantung pada nama bidang tanda tangan yang telah ditentukan, sampaikan nama itu ke sign(). Ini membuatnya lebih mudah untuk merujuk tanda tangan nanti untuk validasi, pemrosesan, atau integrasi dengan alur kerja persetujuan.
import aspose.pdf.facades as pdf_facades
import sys
from os import path
def sign_pdf_with_named_signature(infile, outfile, certificate_path):
pdf_signature = create_pdf_file_signature(infile)
try:
signature = create_pkcs7_signature(certificate_path)
signature.reason = "Approved by signing workflow"
pdf_signature.sign(
1,
DEFAULT_SIGNATURE_NAME,
"Approved by signing workflow",
"qa@example.com",
"New York, USA",
True,
create_signature_rectangle(),
signature,
)
pdf_signature.save(outfile)
finally:
pdf_signature.close()
Terapkan tanda tangan yang terlihat
Anda dapat membuat tanda tangan terlihat di halaman PDF dengan menetapkan tampilan khusus ke PKCS7 object. Ini berguna ketika dokumen output harus menampilkan detail persetujuan seperti alasan, lokasi, dan informasi kontak kepada pengguna akhir.
import aspose.pdf.facades as pdf_facades
import sys
from os import path
def apply_visible_signature(infile, outfile, certificate_path):
pdf_signature = create_pdf_file_signature(infile)
try:
signature = create_pkcs7_signature(certificate_path)
signature.reason = "Visible approval signature"
signature.custom_appearance = create_custom_signature_appearance()
pdf_signature.sign(
1,
"Visible approval signature",
"qa@example.com",
"New York, USA",
True,
create_signature_rectangle(),
signature,
)
pdf_signature.save(outfile)
finally:
pdf_signature.close()