암호화된 숨겨진 워터마크를 포함하도록 PDF를 생성하거나 업데이트하시겠습니까?

암호화된 숨겨진 워터마크를 포함하도록 PDF를 생성하거나 업데이트하시겠습니까?

배경

LaTeX를 사용하여 책을 집필합니다. 사용자가 책을 구매하면 PDF가 자동으로 생성됩니다.

문제

PDF에는 사람의 이름과 연락처 정보가 포함된 워터마크가 있어야 합니다.

질문

다음 기준을 충족하는 소프트웨어는 무엇입니까?

  • 암호화되어 보이지 않는 워터마크를 PDF에 적용합니다.
  • 오픈 소스
  • 플랫폼 독립적(Linux, Windows)
  • 빠름(1초 이내에 200페이지 PDF 표시)
  • 일괄 처리(독점적으로 명령줄 기반)
  • 공모 공격 방지
  • 취약하지 않음(예: PDF -> EPS -> PDF에 여전히 워터마크가 포함되어 있음)
  • 잘 문서화되어 있습니다(예제 사용법 보여줌)

아이디어 및 리소스

몇 가지 생각과 결과:

NLP의 문제점은 문법 오류가 발생할 수 있다는 것입니다. 스테가노그래피의 문제점은 이미지가 이미지 캐시에서 제공되므로 워터마크가 있는 이미지로 해당 캐시를 다시 생성하면 PDF 생성 시 지연이 발생한다는 것입니다(캐시에서 이미지 하나만 삭제할 수도 있지만 이는 우아한 솔루션이 아닙니다).

감사합니다!

답변1

몇 년 전에도 비슷한 일을 했습니다. 모든 "하드" 기준을 충족하지 못했습니다. 다음과 같이 작동했습니다.

  • 나는 임의의 PDF 페이지 테두리 중 하나의 임의 위치에 거의 감지할 수 없는 2x2 포인트 크기의 "클릭 가능한" 영역을 배치했습니다. 우연히 발견될 가능성은 거의 없습니다(어쨌든 PDF에 있었던 매우 분명하게 클릭할 수 있는 다른 핫스팟 중에서...).

  • 링크를 클릭하면 http://my.own.site/project/87245e386722ad77b4212dbec4f0e912일부 "정오표" 글머리 기호가 만들어진 웹페이지로 이동하게 됩니다. ( 87245e386722ad77b4212dbec4f0e912제가 DB 테이블에 저장한 사람 이름 + 연락처 데이터의 MD5 해시 라고 언급했나요 ? :-)

분명히 이것은 인쇄+스캔+ocr-ing 또는 PDF "재튀김" 주기로부터 보호되지 않습니다. 그리고 그것은 또한 어느 정도의 "모호함에 의한 보안"에 의존합니다.

다음은 Ghostscript를 사용하여 Random-in.pdf 1페이지의 왼쪽 하단에 클릭 가능한 핫스팟을 추가하는 방법입니다.

gs \
 -o random-out.pdf \
 -sDEVICE=pdfwrite \
 -dPDFSETTINGS=/prepress \
 -c "[ /Rect [1 1 3 3]" \
 -c "  /Color [1 1 1]" \
 -c "  /Page 1" \
 -c "  /Action <</Subtype /URI" \
 -c "  /URI (http://my.own.site/87245e386722ad77b4212dbec4f0e912)>>" \
 -c "  /Subtype /Link" \
 -c "  /ANN pdfmark" \
 -f random-in.pdf

클릭 가능한 영역을 더 크고 눈에 띄게 변경하려면 다음과 같이 명령줄 매개변수를 변경하세요.

 [....]
 -c "[/Rect [1 1 50 50]" \
 -c "  /Color [1 0 0]" \
 [....]

데이터베이스에 PDF의 MD5 해시를 생성하고 유지하는 것이 훨씬 더 간단합니다. 문서 UUID와 해당 메타데이터 내의 CreationDate 및 ModDate로 인해 생성하는 각 PDF에 대해 고유합니다. 물론, 이는 디지털 형식의 원본 PDF만 추적할 수도 있습니다...

답변2

매우 어려운 문제이고 이것이 귀하의 모든 질문에 전혀 답이 될지 확신할 수 없습니다.

이 작업을 수행하거나 무작위로 수행할 수 있는 올인원 솔루션이 확실하지 않습니다.

하지만 제가 이 일을 맡게 된다면 가장 쉬운 방법은 문서를 HTML 형식이나 이와 유사한 중간 형식으로 유지하는 것이라고 생각합니다.

인쇄 CSS 파일이나 이와 유사한 것을 사용하면 책과 동일하게 레이아웃을 얻을 수 있고 일종의 스크립트를 사용하여 그림, 내용 또는 모든 것을 무작위로 만들고 문서를 다시 조립하는 서버 측 PDF 구성 요소를 사용할 수 있습니다.

그러면 예를 들어 누군가 문서를 구매할 때 구매 스크립트는 보호 메커니즘(예: 첫 번째 사진, 두 번째 사진, 텍스트 등)을 식별하는 번호를 무작위로 선택한 다음 고유한 다운로드 링크를 생성할 수 있습니다.

해당 다운로드 링크가 호출되면 번호를 확인하고 작업을 수행한 후 PDF로 컴파일한 다음 클라이언트에 다운로드합니다.

다시 한 번 말씀드리지만, 이것이 쉽지 않고 간단하지 않을 것이라는 점을 알고 있습니다. 그러나 귀하는 쉬운 것을 요구하지 않으며 이것이 제가 생각할 수 있는 최선의 방법입니다.

관련 정보