![在命令行中获取签名 pdf 的旧版本](https://linux22.com/image/223687/%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E8%8E%B7%E5%8F%96%E7%AD%BE%E5%90%8D%20pdf%20%E7%9A%84%E6%97%A7%E7%89%88%E6%9C%AC.png)
我正在创建一个多重签名的 PDF捷签PDF。我有一个空的 PDF 文件,我对其进行了多次签名。以下是我如何制作 PDF 的最小可重现示例:
$ echo 'JVBERi0xLjYKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nDPQM1Qo5ypUMFAw0DMwslAwMzTUszQ3VDC3hNBFqVzhWgp5XIEKALasCKwKZW5kc3RyZWFtCmVuZG9iagoKMyAwIG9iago0NQplbmRvYmoKCjUgMCBvYmoKPDwKPj4KZW5kb2JqCgo2IDAgb2JqCjw8L0ZvbnQgNSAwIFIKL1Byb2NTZXRbL1BERi9UZXh0XQo+PgplbmRvYmoKCjEgMCBvYmoKPDwvVHlwZS9QYWdlL1BhcmVudCA0IDAgUi9SZXNvdXJjZXMgNiAwIFIvTWVkaWFCb3hbMCAwIDYxMiA3OTJdL0dyb3VwPDwvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCL0kgdHJ1ZT4+L0NvbnRlbnRzIDIgMCBSPj4KZW5kb2JqCgo0IDAgb2JqCjw8L1R5cGUvUGFnZXMKL1Jlc291cmNlcyA2IDAgUgovTWVkaWFCb3hbIDAgMCA2MTIgNzkyIF0KL0tpZHNbIDEgMCBSIF0KL0NvdW50IDE+PgplbmRvYmoKCjcgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL1BhZ2VzIDQgMCBSCi9PcGVuQWN0aW9uWzEgMCBSIC9YWVogbnVsbCBudWxsIDBdCi9MYW5nKGVuLVVTKQo+PgplbmRvYmoKCjggMCBvYmoKPDwvQ3JlYXRvcjxGRUZGMDA1NzAwNzIwMDY5MDA3NDAwNjUwMDcyPgovUHJvZHVjZXI8RkVGRjAwNEMwMDY5MDA2MjAwNzIwMDY1MDA0RjAwNjYwMDY2MDA2OTAwNjMwMDY1MDAyMDAwMzcwMDJFMDAzMD4KL0NyZWF0aW9uRGF0ZShEOjIwMjEwODA2MjEzOTQwKzA3JzAwJyk+PgplbmRvYmoKCnhyZWYKMCA5CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDIyOSAwMDAwMCBuIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDAxMzUgMDAwMDAgbiAKMDAwMDAwMDM3MSAwMDAwMCBuIAowMDAwMDAwMTU0IDAwMDAwIG4gCjAwMDAwMDAxNzYgMDAwMDAgbiAKMDAwMDAwMDQ2OSAwMDAwMCBuIAowMDAwMDAwNTY1IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSA5L1Jvb3QgNyAwIFIKL0luZm8gOCAwIFIKL0lEIFsgPDEyNjU4NTJFNUQ2NDI1OUEyNUIzOTVEODg2NTBFM0M3Pgo8MTI2NTg1MkU1RDY0MjU5QTI1QjM5NUQ4ODY1MEUzQzc+IF0KL0RvY0NoZWNrc3VtIC81QUVFNkRFQUU5NThBN0Y0NjU0MTRFRTZFMjg2NkFBRQo+PgpzdGFydHhyZWYKNzM5CiUlRU9GCg==' | base64 -d > /tmp/unsigned.pdf
$ md5sum /tmp/unsigned.pdf
496fe125de5af6d854633640b6c3f9c0 /tmp/unsigned.pdf
然后我使用 java keytool 生成一个密钥库来生成签名密钥对:
$ keytool -genkeypair -dname "cn=myname, ou=myunit, o=myorg, l=mycity, ST=mystate, c=US" -alias mykeystore -keyalg rsa -keystore /tmp/mykeystore.jks -storepass mypass -validity 365
Generating 3,072 bit RSA key pair and self-signed certificate (SHA384withRSA) with a validity of 365 days
for: CN=myname, OU=myunit, O=myorg, L=mycity, ST=mystate, C=US
然后我使用以下命令多次签署同一个 PDF 文档(例如:3 次):
$ jsignpdf /tmp/unsigned.pdf \
--l2-text '' \
--l4-text '' \
--out-directory /tmp/ \
--append \
--contact [email protected] \
--location mycity \
--reason myreason \
--certification-level NOT_CERTIFIED \
--hash-algorithm SHA256 \
--disable-assembly \
--disable-modify-content \
--disable-modify-annotations \
--disable-fill \
--keystore-file /tmp/mykeystore.jks \
--keystore-password mypass \
--keystore-type JKS \
--key-alias mykeystore
$
$ jsignpdf /tmp/unsigned_signed.pdf \
--l2-text '' \
--l4-text '' \
--out-directory /tmp/ \
--append \
--contact [email protected] \
--location mycity \
--reason myreason \
--certification-level NOT_CERTIFIED \
--hash-algorithm SHA256 \
--disable-assembly \
--disable-modify-content \
--disable-modify-annotations \
--disable-fill \
--keystore-file /tmp/mykeystore.jks \
--keystore-password mypass \
--keystore-type JKS \
--key-alias mykeystore
结果是这些文件:
- mykeystore.jks :密钥库
- unsigned.pdf :尚未签名的初始 PDF 文件
- unsigned_signed.pdf :签名 1x
- unsigned_signed_signed.pdf :签名 2x
问题是:我正在尝试通过命令行unsigned_signed.pdf
获取文件。unsigned_signed_signed.pdf
我可以用奥库拉的 GUI,通过单击“显示签名面板”> 右键单击“rev.1”> 单击“属性”> 单击按钮“查看签名版本”> 然后单击按钮“另存为”,如下图所示(另存为“/ tmp/Revision.pdf' 按 okular 的默认命名方案)
我可以确认 /tmp/Revision.pdf 和 unsigned_signed.pdf 与其 md5 哈希值相同:
$ md5sum /tmp/Revision.pdf
a31e93031fa0df9889a99757c5533595 /tmp/Revision.pdf
$ md5sum /tmp/unsigned_signed.pdf
a31e93031fa0df9889a99757c5533595 /tmp/unsigned_signed.pdf
现在,如何仅通过命令行实现相同的目标?我应该使用什么工具/程序来做到这一点?
出于测试目的,以下是这些文件的 base64(经过 gzip 压缩以符合最大字符数限制):
$ cat /tmp/unsigned.pdf | gzip | base64 -w0
H4sIAAAAAAAAA4VUy27TQBRlieYrZhO1BZUZz8s2iiK5flQVRY2cIEHTLowzTQOpJ7LHKGGHxGcgsWGD1BVIZcMuP9AFP8CK32Acp4nVIGHJnpkz955z7p2RW90g2reeCNBafFn8XNwsPgMCMVSv34B2Gx3LbKQvITVIjKLxRMscRZNEy0Cmaig7HVDoXCZXYPaJ3tL+7p9HfdzFtxR/62LKfn1ndh//+Hgbfj37fQrmZx/Ag5vrh9dAZsNVnplVUoCuNBlfQ3xtAxidO1RszEUq07CKigHq5irtST1AphzUlzN93kyyNkn9+VSibjKqPrk0BGxZWywLVeapLKBYrp/L4Tg5ULMBNkthEWi75Bwd5qqcGpIe6udJVkwrhnSO/B4K5LtxKuPDA3QEdV6aziDf2DMCBaz6GTfcsH+4KcB9C2DjATZMwHOAno2HxQBWRcXV0lelqcNqKNj3FPxEJxM1qpXqigE6mcrMS/VYZYOaCr18dQqzcjKpP9hQHyfZaFdm+y96e81+Oht+3xyjVnk7CqMIY25jbBOMhWtGZkZerTvL8xmWqbyLY34dI8gq3sQxgwuxeqs9WuNmG1PDS0IzYsO1lDS2A3MPd4OnBBMLO4bKoi7Dj7G9g/HOXsPtLJcXAEMX4PUDBeeUwwt4hxHiwnonW2PY2sYsk3Ufo7a1HcfZNmaLLYyJbQ0uGho6T8YTmVet7o3fS+iiWCkN7foMj7ILBZ3VPIAD2LaI4A4nIQ8EI9z1CD+gLg8cx7QypL7dAf8PqS5VoFL/UqZvi/IKIu6FoQhCL3S549kRE5xZzEAhcYTwvBAsfwRJrpettqkLWq3wJAJ/AQ2KOpBdBAAA
$ cat /tmp/unsigned_signed.pdf | gzip | base64 -w0
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
$ cat /tmp/unsigned_signed_signed.pdf | gzip | base64 -w0
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
$ cat /tmp/mykeystore.jks | base64 -w0
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