명령줄을 사용하여 제한된 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"}

관련 정보