더 이상 복사 할 수없는 텍스트가되지 않도록 PDF의 텍스트 내용을 프로그래밍 방식으로 변경 / 보호하려면 어떻게해야합니까?

UserZer0

OCR과 반대로하고 싶고, 이미지를 텍스트로 바꾸고 싶지 않고, PDF의 모든 텍스트를 이미지로 바꾸고 싶어서 자연스럽게 선택하고 복사 할 수 없도록하고 싶습니다.

Acrobat Pro에서는 괜찮지 만 할 일이 많은 PDF가 있고 현재 웹 사이트에 있으므로 Linux 명령 줄에서 사용할 수있는 작업을 정말 원합니다. 이 변경 사항을 서버에 적용 할 수 있다면 매우 느린 내 CMS의 인터페이스를 통해 수행해야하는 다운로드, Acrobat에서 처리, 다시 업로드하는 작업 시간을 절약 할 수 있습니다.

따라서이 작업을 쉽게 수행 할 수있는 PDF 도구가 있다면 터미널에서 사용할 수 있습니다.

커트 파이 플

당신의 목표는 PDF에서 텍스트를 선택하고 복사 하는 것을 더 어렵게 만드는 것이라고 생각합니다 . 그것이 당신이 낼 수있는 유일한 달성 가능한 목표이기 때문입니다. (화면에서 PDF 페이지를 볼 수있는 방법이 있다면 복사하여 붙여 넣는 것보다 더 어렵지만 어떻게 든 텍스트 나 이미지 내용에 액세스 할 수있는 방법이 있습니다. 알고 있습니다.)

세 가지 옵션이 있습니다.

  1. PDF 페이지를 전체 페이지 픽셀 이미지 로 변환 하고 이러한 이미지를 다시 여러 페이지 PDF로 래핑합니다.
  2. 포함 된 모든 글꼴의 글리프를 벡터 외곽선 으로 변환합니다 .
  3. 사용자 비밀번호로 PDF를 "암호화" 합니다.

이 세 가지 방법 각각은 올바른 도구가 주어지면 적용하기가 매우 쉽습니다. :-)

이러한 각 방법에 대해 명령 줄에서 무료 및 오픈 소스 소프트웨어 도구를 사용할 수 있습니다. (각 도구는 Linux, Mac OSX, Unix 또는 Windows에서 사용할 수 있습니다.)

아래의 각 방법에 대한 자세한 설명을 참조하십시오.

1. 전체 페이지 픽셀 이미지 만들기 (ImageMagick 사용 convert)

ImageMagickconvert명령을 다음과 같이 사용할 수 있습니다 .

 convert              \
   pdf-with-fonts.pdf \
   pdf-with-images.pdf

ImageMagick은 다른 형식이 아닌 래스터 이미지 로만 직접 작업 할 수 있습니다 . PDF를 직접 처리 할 수 ​​없기 때문에 자동으로 Ghostscript대리인 으로 사용 합니다. 따라서 Ghostscript도 설치해야합니다! Ghostscript는 ImageMagick의 입력으로 필요한 래스터 이미지를 만듭니다.

-verbose명령 줄에 스위치를 추가하여 Ghostscript를 백그라운드 프로세스로 사용하여 ImageMagick의 프로세스를 관찰 할 수 있습니다 .

기본적 convert으로 72ppi의 해상도를 사용합니다. 이것은 잘 읽는 데 충분하지 않을 수 있습니다 (그러나 출력에 OCR 소프트웨어적용하여 '보호'를 우회하는 것이 훨씬 더 어려울 것 입니다.)

600 % 줌에서 72PPI의 픽셀 화 된 PDF 페이지

위 이미지는 600 % 확대 / 축소 수준에서 ImageMagick이 사용하는 기본 해상도 (72 PPI)로 생성 된 픽셀 화 된 PDF 페이지의 스크린 샷을 보여줍니다. 더 나은 해상도 (예 : 200PPI)가 필요한 경우 -density 200명령 줄에 매개 변수를 추가합니다 .

 convert              \
  -density 200        \
   pdf-with-fonts.pdf \
   pdf-with-images.pdf

600 % 줌에서 200PPI로 픽셀 화 된 PDF 페이지

위 이미지는 200PPI의 더 높은 해상도로 ImageMagick에서 만든 픽셀 화 된 PDF 페이지의 샷 (600 % 확대 / 축소 수준에서도)을 보여줍니다.

기본 해상도 인 72PPI로 위의 명령을 테스트했을 때 모든 텍스트와 크기가 1MB 인 219 페이지 PDF는 23MB의 출력 파일이되었습니다. MacBook에서 생성하는 데 약 2 분이 걸렸습니다. 200ppi PDF는 110MB가되었고 준비하는 데 11 분이 걸렸습니다 ...

우회?

해상도가 충분하면 페이지의 픽셀 화를 피하는 것이 쉽습니다. OCR은 잘 작동합니다. 저해상도에서도 사람이 읽을 수 있고 추측 할 수 있지만 기계가 좋은 OCR 결과를 내기에는 어렵습니다.

2. 모든 글리프를 벡터 외곽선으로 변환 (Ghostscript 사용)

최신 및 최신 버전의 Ghostscript를 사용할 수 있습니다. 버전 v9.15 . 을 사용하여 설치된 버전을 확인하십시오 gs -version.

최신 버전 v9.15에는 새로운 명령 줄 매개 변수 인 --dNoOutputFonts. 이 매개 변수는 모든 글리프 모양을 윤곽선으로 변환하고 포함 된 모든 글꼴을 제거합니다.

gs                        \
 -o pdf-with-outlines.pdf \
 -sDEVICE=pdfwrite        \
  pdf-with-fonts.pdf

내 테스트에서 동일한 219 페이지의 PDF (1MB 크기)가 186MB의 출력 파일로 변환되어 변환하는 데 6 분이 걸립니다.

윤곽선의 장점은 페이지의 텍스트가 선명하고 선명하며 픽셀 화되지 않은 상태로 유지되며 선명도를 잃지 않고 모든 수준에서 텍스트를 확대 할 수 있다는 것입니다. 다음 스크린 샷에서 확인할 수 있습니다.

600 % 줌으로 PDF 페이지의 벡터화 된 텍스트

단점은 파일의 크기입니다. (BTW, Adobe Acrobat Pro XI를 사용하여 텍스트를 윤곽선으로 변환하는 동일한 방법을 테스트 한 결과 파일 크기는 61MB로 처리하는 데 15 분이 걸렸습니다.)

우회?

이 조치를 우회하는 것은 쉽습니다. OCR은 잘 작동합니다.

3. Protect PDF by 'encrypting' it (Using qpdf)

What is not so well known, is that you can 'protect' or ('encrypt') a PDF with empty passwords (the 'user' as well as the 'owner' passwords). This allows all PDF reader/viewer software to open the file without asking for a password, only popping up the password dialog when trying to copy text from a page or when trying to print the file.

QPDF has quite good support for this:

qpdf                    \
  --encrypt  ""  ""  40 \
  --print=n             \
  --modify=n            \
  --extract=n           \
  --                    \
    uncrypted.pdf       \
    crypted.pdf

What do all these command options mean?

  • --encrypt "" "" 40:
       This sets both passwords (user and owner) to the empty string and the key length to 40 bits.

  • --print=n:
       This disables printing of the PDF.

  • --modify=n:
       This disables modification of the PDF.

  • --extract=n:
       This disables text and image extraction of the PDF.

  • --:
       This is required to signal the end of encryption options.

There are more (and different) detailed options available with QPDF if you use a 128 or 256 bit keylength. Other available options include --modify=[annotate|form|assembly] which would allow the filling of forms, adding of annotations or assembling the document with other PDFs (while at the same time still disallowing copy'n'paste or print).

This command

 qpdf --show-encryption crypt.pdf 

Will show the details about any file's 'encryption' settings. Example:

 extract for accessibility: not allowed
 extract for any purpose: not allowed
 print low resolution: not allowed
 print high resolution: not allowed
 modify document assembly: not allowed
 modify forms: allowed
 modify annotations: allowed
 modify other: not allowed
 modify anything: not allowed

한 단어가 선택된 '보호 된'PDF.  왼쪽 아래 : 복사 금지.  오른쪽 아래 : 인쇄 금지.

BTW: Leaving the password empty in the two dialogs shown above will not help with (most? or all? haven't tested...) PDF viewers. It still won't unlock to copy or print.

The advantage of this method lies in its fast execution and its almost identical file size.

Circumvent?

Of course, it is just as easy to remove the 'encryption' again:

qpdf --decrypt crypted.pdf decrypted.pdf

4. Summary

For fast results, identical file sizes, and easy-to-remove protection against 'casual' selection and copying of text, use 'protection'/'encryption' with an empty password.

For slow results, and potentially huge file sizes (but not always good looking pages) and a bit more-work-to-remove-the-protection, use pixelization for all pages.

For even slower results (but always better looking pages) and also more-work-to-remove-the-protection, use the vector outlining method of all text.

이러한 모든 방법이 PDF 페이지의 내용을 절대적으로 보호하는 것은 아닙니다. 그들은 추출하는 것이 더 불편합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관