コマンドラインを使用して制限されたPDFを検出する方法は?

コマンドラインを使用して制限されたPDFを検出する方法は?

一部のPDFファイルには、コンテンツをクリップボードにコピーできないようにするフラグが設定されています。印刷やその他の一部のジョブも無効にすることができます。qpdf -decryptこの制限は通常、コマンドを使用して簡単に削除できます。

私が望むのは、復号化操作を適用せずに(実際にPDFを開いて何かをコピーしようとせずに)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

あなたはそれを使用することができますpdflypypdfを使用します(私は著者です)。

インストールする

これは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"}

関連情報