Как создать файл PDF, содержащий поле подписи, используя python? - PullRequest
4 голосов
/ 05 мая 2020

Чтобы иметь возможность подписывать документ PDF с помощью DS C на основе токенов, мне нужно так называемое поле подписи в моем PDF-документе.

Это прямоугольное поле angular, которое вы можете заполните цифровой подписью, например, с помощью Adobe Reader или Adobe Acrobat.

An image of the rectangular field you can fill with a digital signature using e.g. Adobe Reader or Adobe Acrobat.

Я хочу создать этот подписываемый PDF-файл в Python.

Я начинаю с простого текста или документа с расширенным текстом (изображение и текст) в формате .docx.

Как мне создать PDF-файл с этим полем в Python?

Ответы [ 3 ]

2 голосов
/ 14 мая 2020

К сожалению, мне не удалось найти (бесплатных) решений. Всего Python программ, подписывающих документы PDF.

Но есть Python PDF SDK под названием PDFTron , для которого доступна бесплатная пробная версия. Вот ссылка на конкретную c статью, в которой показано, как «добавить поле подписи сертификата в документ PDF и подписать его».

# Open an existing PDF
doc = PDFDoc(docpath)

page1 = doc.GetPage(1)

# Create a text field that we can lock using the field permissions feature.
annot1 = TextWidget.Create(doc.GetSDFDoc(), Rect(50, 550, 350, 600), "asdf_test_field")
page1.AnnotPushBack(annot1)

# Create a new signature form field in the PDFDoc. The name argument is optional;
# leaving it empty causes it to be auto-generated. However, you may need the name for later.
# Acrobat doesn't show digsigfield in side panel if it's without a widget. Using a
# Rect with 0 width and 0 height, or setting the NoPrint/Invisible flags makes it invisible. 
certification_sig_field = doc.CreateDigitalSignatureField(cert_field_name)
widgetAnnot = SignatureWidget.Create(doc, Rect(0, 100, 200, 150), certification_sig_field)
page1.AnnotPushBack(widgetAnnot)

...

# Save the PDFDoc. Once the method below is called, PDFNet will also sign the document using the information provided.
doc.Save(outpath, 0)
0 голосов
/ 18 мая 2020

вы можете использовать https://github.com/mstamy2/PyPDF2 или https://github.com/mstamy2/PyPDF2 для создания PDF с кодом python.

, а затем использовать открытый исходный код Java-Digital-Signature: Java инструмент командной строки для цифровой подписи с токеном PKCS # 11: https://github.com/AlessioScarfone/Java-Digital-Signature

и вызовите свой python код:

import subprocess
subprocess.call(['java', '-jar', 'signer.jar', 'pades', 'test.pdf'])
0 голосов
/ 17 мая 2020

Я использую библиотеку signpdf python для подписи pdf.

См. Эту ссылку для лучшего понимания https://github.com/yourcelf/signpdf

pip install signpdf

Демо: - Подпишите первая страница "contract.pdf" с подписью "sig.png": ->

signpdf contract.pdf sig.png --coords 1x100x100x150x40

unserstand Coords: - Ссылка на Github

...