4

如何使用 Python 对 PDF 文档进行数字签名?我有一个 etoken(在笔式驱动器中)。

此外,我使用 openpyxl 创建了一个 excel 文件并将其转换为 PDF。现在有一个要求,我需要为该 PDF 文档添加数字签名。

有什么办法可以在 python 中实现这一点?

4

1 回答 1

10

使用为此任务设计的 python 模块,它对 PDF-s 进行数字签名。您应该拥有的一切都是带有证书的 p12/pfx 文件。

简单示例在: github 存储库示例

#!/usr/bin/env python3
# *-* coding: utf-8 *-*
from oscrypto import asymmetric
from endesive import pdf

def main():
    dct = {
        b'sigflags': 3,
        b'contact': b'me@email.com',
        b'location': b'City',
        b'signingdate': b'20180731082642+02\'00\'',
        b'reason': b'Some descriptive message',
    }
    p12 = asymmetric.load_pkcs12(
        open('demo2_user1.p12', 'rb').read(),
        '1234'
    )
    datau = open('pdf.pdf', 'rb').read()
    datas = pdf.cms.sign(datau, dct, p12[0], p12[1], [], 'sha256')
    with open('pdf-signed-cms.pdf', 'wb') as fp:
        fp.write(datau)
        fp.write(datas)

main()
于 2018-09-21T12:55:47.950 回答