Tạo hoặc cập nhật PDF để bao gồm một hình mờ được mã hóa, ẩn?


10

Lý lịch

Sử dụng LaTeX để viết một cuốn sách. Khi người dùng mua sách, PDF sẽ được tạo tự động.

Vấn đề

PDF phải có hình mờ bao gồm tên người và thông tin liên hệ.

Câu hỏi

Phần mềm nào đáp ứng các tiêu chí sau:

  • Áp dụng hình mờ, hình mờ vô hình cho PDF
  • Mã nguồn mở
  • Nền tảng độc lập (Linux, Windows)
  • Nhanh (đánh dấu PDF 200 trang dưới 1 giây)
  • Xử lý hàng loạt (độc quyền điều khiển dòng lệnh)
  • Chống thông đồng
  • Không dễ vỡ (ví dụ: PDF -> EPS -> PDF vẫn chứa hình mờ)
  • Tài liệu tốt (hiển thị ví dụ sử dụng)

Ý tưởng & Tài nguyên

Một số suy nghĩ và phát hiện:

Vấn đề với NLP là lỗi ngữ pháp có thể được đưa ra. Vấn đề với chức năng ghi ảnh là các hình ảnh được lấy từ bộ đệm hình ảnh và do đó, việc tạo lại bộ đệm đó bằng hình ảnh thủy ấn sẽ gây ra sự chậm trễ khi tạo PDF (tôi chỉ có thể xóa một hình ảnh khỏi bộ đệm, nhưng đó không phải là một giải pháp tao nhã).

Cảm ơn bạn!


Vui lòng sửa đổi mô tả của bạn về các yêu cầu một chút, nếu không chúng không rõ ràng. "Hình mờ không thể phát hiện" rõ ràng không phải là điều bạn muốn ... nếu không, làm thế nào bạn có thể tự mình phát hiện ra chúng nếu bạn cần?
Kurt Pfeifle

Có một chút không rõ chính xác mục đích của hệ thống được hình thành của bạn là gì: Phát hiện nếu PDF được chuyển cho người dùng khác, mặc dù giấy phép của bạn có cấm điều này không? Phát hiện nếu PDF được in trên giấy, mặc dù giấy phép của bạn không cấm điều này? Theo dõi cách của một tệp PDF cụ thể thông qua internet và theo dõi khi nó được mở? Hay cái gì khác?
Kurt Pfeifle

@pipitas: Nếu một phiên bản PDF đã đăng ký được phát hành, mà không được phép, vào tự nhiên, tôi muốn biết ai đã phát hành nó. Nhưng nếu mọi người có thể thấy rằng PDF có hình mờ, thì hình mờ trở nên dễ dàng hơn nhiều để phá vỡ.
Dave Jarvis

Câu trả lời:


6

Tôi đã làm một cái gì đó tương tự một vài năm trước. Nó không đáp ứng tất cả các tiêu chí "cứng" của bạn. Nó hoạt động như thế này:

  • Tôi đặt một khu vực "có thể nhấp" có kích thước 2x2 khó phát hiện trên một số vị trí ngẫu nhiên tại một trong các đường viền của trang PDF ngẫu nhiên. Không có khả năng nó bị phát hiện một cách tình cờ (trong số các điểm nóng khác rất rõ ràng có thể nhấp vào trong tệp PDF ...).

  • Nếu bạn nhấp vào liên kết, nó sẽ đưa bạn đến một trang web http://my.own.site/project/87245e386722ad77b4212dbec4f0e912, với một số gạch đầu dòng "errata" được tạo thành. (Tôi có đề cập đến đó 87245e386722ad77b4212dbec4f0e912là hàm băm MD5 của tên người + dữ liệu liên hệ mà tôi đã lưu trong bảng DB không? :-)

Rõ ràng, điều này không bảo vệ chống lại việc in + quét + ocr-ing hoặc chống lại chu trình "refrying" PDF. Và nó cũng dựa trên một số mức độ "bảo mật bằng cách tối nghĩa".

Dưới đây là cách bạn sử dụng Ghostscript để thêm một điểm nóng có thể nhấp như vậy vào góc dưới bên trái của trang 1 của Random-in.pdf:

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

Để làm cho khu vực có thể nhấp lớn hơn và thay đổi có thể nhìn thấy trên các tham số dòng lệnh như thế này:

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

Đơn giản hơn nữa là tạo và giữ băm MD5 trong cơ sở dữ liệu của bạn. Nó sẽ là uniq cho mỗi PDF bạn tạo, vì các tài liệu UUID và CreationDate và ModDate bên trong dữ liệu meta của nó. Tất nhiên, điều này cũng chỉ cho phép theo dõi các tệp PDF gốc ở dạng kỹ thuật số ...


Bạn đã bao giờ tìm thấy một bản PDF trong tự nhiên và theo dõi nó bằng cách sử dụng kỹ thuật này?
Dave Jarvis

@Dave Jarvis: Vâng, theo cách nào đó ... Nhưng đó không phải là điều "nghiêm trọng", tôi không có hứng thú thực sự với việc theo dõi. Tôi đã làm điều đó như một bằng chứng về khái niệm duy nhất và sau khoảng 6 tháng tôi đã tắt máy chủ web "theo dõi". Đó là cho một máy chủ PDF mạng, tôi đã thiết lập bên trong một công ty của khách hàng. "Trình theo dõi" tương tự như mô tả ở trên, nhưng đã sử dụng một khu vực có thể nhấp vào toàn trang. Tôi vừa theo dõi số lần "truy cập" trong tệp nhật ký apache ....
Kurt Pfeifle

Ý tưởng hay, nhưng lưu ý rằng việc chạy GhostScript qua PDF như thế có thể làm giảm mọi hình ảnh được lấy mẫu mà nó chứa, vì GhostScript không hỗ trợ giải nén chúng (làm mất thông tin từ hình ảnh được nén theo kiểu JPEG trong đầu vào) và có xu hướng áp dụng nén kiểu JPEG cho tất cả các hình ảnh (ngay cả những hình ảnh vừa giải nén) ...
SamB

@SamB: Tôi nghĩ bạn có thể thêm -dJPEQ=100 -dQFActor=1.0vào dòng lệnh Ghostscript để đảm bảo bạn sẽ duy trì 100% chất lượng JPEG hiện tại. Nhưng không, tôi đã không nhận thấy bất kỳ sự suy giảm chất lượng hình ảnh nào trong các tệp của mình nếu tôi sử dụng cài đặt chung -dPDFSETTINGS=/prepresskhi chưng cất lại bất kỳ tệp PDF nào với Ghostscript ....
Kurt Pfeifle

[contd.] Và không, không chỉ nén JPEG được cung cấp cho hình ảnh từ Ghostscript - bạn có thể sử dụng -dColorImageFilter=/FlateEncode(đó là ZIP không mất dữ liệu) để ghi đè mặc định =/DCTEncode(là JPEG mất dữ liệu) trong các phiên bản GS cũ. Vì GS v7.21 mặc định là =/FlateEncodedù sao ... Tương tự như màu sắc là đúng với -dGrayImageFilter=...( -dMonoImageFilter=...sử dụng /CCITTFaxEncodetheo mặc định.)
Kurt Pfeifle

1

Rất khó và tôi không chắc chắn rằng điều này sẽ trả lời tất cả các câu hỏi của bạn.

Tôi không chắc chắn về một giải pháp tất cả trong một có thể làm điều này, hoặc ngẫu nhiên.

Tuy nhiên, nếu tôi được giao nhiệm vụ này, tôi sẽ nghĩ rằng cách dễ nhất là giữ tài liệu ở định dạng trung gian như định dạng HTML hoặc tương tự.

Sử dụng tệp CSS in hoặc tương tự, bạn có thể đặt bố cục giống hệt với sách và sử dụng tập lệnh sắp xếp ngẫu nhiên hình ảnh, nội dung hoặc bất cứ thứ gì và thành phần PDF phía máy chủ lắp ráp lại tài liệu.

vì vậy sau đó - ví dụ: khi ai đó mua tài liệu, tập lệnh mua của bạn có thể chọn ngẫu nhiên một số xác định cơ chế bảo vệ (ví dụ: ảnh thứ nhất, ảnh thứ hai, văn bản ở đâu đó, v.v.), sau đó tạo liên kết tải xuống duy nhất.

Khi liên kết tải xuống đó được gọi, nó sẽ kiểm tra số, thực hiện thao tác và biên dịch thành pdf sau đó tải xuống máy khách.

Một lần nữa, tôi biết điều này sẽ không dễ dàng / thẳng tiến, nhưng bạn không yêu cầu điều gì đó dễ dàng và đây là cách tốt nhất tôi có thể nghĩ ra.


@Dave Jarvis - Tôi hiểu đầy đủ những gì bạn đang cố gắng làm ... như tôi đã nói, tôi không chắc chắn giải pháp tốt nhất, nhưng những gì tôi đã nói ít nhất nên hoạt động ... chỉ là dễ dàng.
William Hilsum

@Dave Jarvis - Điều tôi đã cố gắng nói / hiểu là tôi chưa bao giờ thấy tất cả trong một / cách dễ dàng để làm những gì bạn muốn, nhưng sử dụng PHP / ASP.Net, việc viết kịch bản / gọi bên thứ ba sẽ dễ dàng hơn các thành phần. Tôi nghĩ rằng nếu bạn có toàn bộ tài liệu trong HTML được định dạng chính xác / chính xác, sẽ rất dễ sử dụng thành phần PDF để chuyển đổi .... Ví dụ: giả sử có 100 trang và hình ảnh trên trang 31, bạn có thể có các trang 1-30 dưới dạng PDF và các trang 32-100 dưới dạng PDF, trang 31 sẽ được tạo và định dạng bằng html (theo kiểu của phần còn lại của cuốn sách), sau đó bạn có thể sử dụng 1/2
William Hilsum

thành phần pdf sẽ nhận được tệp PDF đầu tiên, chuyển đổi trang html, nhận bản PDF thứ hai và tạo bản pdf mới kết hợp tất cả. Trang được tạo có thể gọi các tập lệnh, có thể thực hiện chức năng ghi ảnh (không chắc chắn trên động từ!) Hoặc bất cứ thứ gì bạn muốn ... có nhiều thành phần pdf (miễn phí và trả tiền) - đây là một ví dụ ... thành phần.com / SuperSản phẩm / PDF Tôi hy vọng điều này làm cho nó rõ ràng hơn một chút những gì tôi đang cố gắng vượt qua - chỉ rất khó để giải thích. 2/2
William Hilsum

@Dave Jarvis - ehh, không chính xác ... Như tôi đã nói, rất khó để giải thích .... Một số thành phần PDF rất tuyệt vời cùng với kiểu CSS / in. Ví dụ, nhìn vào Moodle. Có thể định dạng đầy đủ một trang web và làm cho một bản in trông giống như một cuốn sách / theo một phong cách. Sau đó, bạn có thể sử dụng một thành phần PDF để xuất / lưu CHÍNH XÁC như cách nó sẽ nhìn vào kết quả cuối cùng. Bạn có thể dễ dàng tạo hình ảnh bạn cần và có văn bản, và lắp ráp nó (liền mạch với người dùng cuối) dưới dạng một tệp PDF. Tôi chỉ đề cập đến web / php / asp.net vì tôi nghĩ đó là cách dễ nhất để đạt được những gì bạn muốn.
William Hilsum

@Dave Jarvis: Tôi đoán bạn không sử dụng pdfTeX? (Hoặc bạn lo lắng hơn về việc người dùng thực hiện chuyển đổi pdf-> ps-> pdf và làm giảm hình ảnh mẫu trong quy trình?). Dù sao, PS-> pdf chuyển đổi làm ảnh thường suy thoái, vì GhostScript không đủ thông minh để giữ gìn hình ảnh JPEG kiểu ở dạng nén, và có xu hướng tự động áp dụng nén JPEG-phong cách cho bất kỳ hình ảnh xuất hiện trong đầu vào. (Distiller rõ ràng có thể được hướng dẫn để lại hình ảnh theo phong cách JPEG, nhưng có ai thực sự có điều đó không?)
SamB
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.