某些 PDF 文件中设置了一些标志,不允许将内容复制到剪贴板。打印和其他一些操作也可以被禁止。通常可以使用qpdf -decrypt
命令轻松删除该限制。
我想要的是检查 PDF 是否受到限制,而不应用解密操作(并且没有实际打开它并尝试复制某些内容),以便我可以运行脚本来查找特定文件系统下的所有受限制文件。
答案1
波普勒提供了一个pdfinfo
工具,可用于确定任何给定 PDF 中活动的保护。受限 PDF 已启用加密,并且pdfinfo
将输出(除其他外)一行指示:
Encrypted: yes (print:no copy:no change:no addNotes:no algorithm:RC4)
所以像
pdfinfo yourpdf.pdf | grep -q 'Encrypted:.*yes \(.*copy:no.*\)'
仅当 PDF 不允许复制时才会成功。
答案2
qpdf
也有能力检查它。例如你可以使用
qpdf --is-encrypted FILE.pdf
或者
qpdf --requires-password FILE.pdf
结果可以通过 访问echo $?
。检查qpdf --help=inspection
更多信息。
答案3
您可以使用pdfly
它使用 pypdf (我是作者)。
安装
这是一个 python 包,所以:
pip install pdfly
取决于您的系统,它可能是pip3
。此外,如果仅适用于您的用户,您可以添加该--user
标志。
你可以使用pipx
安装它。
用法
$ pdfly meta encrypted-pdf.pdf
Operating System Data
┏━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Attribute ┃ Value ┃
┡━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ File Name │ /home/moose/Downloads/encrypted-pdf.pdf │
│ File Permissions │ -rw-rw-r-- │
│ File Size │ 18,950 bytes │
│ Creation Time │ 2023-07-02 23:23:18 │
│ Modification Time │ 2023-07-02 23:23:18 │
│ Access Time │ 2023-07-04 22:55:44 │
└───────────────────┴─────────────────────────────────────────┘
PDF Data
┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓
┃ Attribute ┃ Value ┃
┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩
│ Title │ │
│ Producer │ │
│ Author │ │
│ Pages │ unknown │
│ Encrypted │ revision=6 v_value=5 │
│ PDF File Version │ │
│ │ endobj │
│ │ │
│ Page Layout │ │
│ Page Mode │ │
│ PDF ID │ ID1=None ID2=None │
│ Attachments │ unknown │
│ Images │ 0 images (0 bytes) │
└──────────────────┴──────────────────────┘
Encryption information
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓
┃ Attribute ┃ Value ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━┩
│ Security Handler Revision Number │ 6 │
│ V value │ 5 │
└──────────────────────────────────┴───────┘
Use the 'pagemeta' subcommand to get details about a single page
或者:
$ pdfly meta encrypted-pdf.pdf --output json
{"encryption": {"revision": 6, "v_value": 5}, "pdf_file_version": "\nendobj\n", "title": null, "producer": null, "author": null, "pages": null, "page_mode": null, "page_layout": null, "attachments": "unknown", "id1": null, "id2": null, "images": [], "file_permissions": "-rw-rw-r--", "file_size": 18950, "creation_time": "2023-07-02T23:23:18.056793", "modification_time": "2023-07-02T23:23:18.056793", "access_time": "2023-07-04T22:55:44.186378"}