如何使用命令行检测受限 PDF?

如何使用命令行检测受限 PDF?

某些 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"}

相关内容