สร้างหรืออัปเดต PDF เพื่อรวมลายน้ำที่เข้ารหัสและซ่อนไว้หรือไม่


10

พื้นหลัง

ใช้ LaTeX เพื่อเขียนหนังสือ เมื่อผู้ใช้ซื้อหนังสือ PDF จะถูกสร้างขึ้นโดยอัตโนมัติ

ปัญหา

PDF ควรมีลายน้ำที่มีชื่อบุคคลและข้อมูลการติดต่อ

คำถาม

ซอฟต์แวร์ใดที่ตรงตามเกณฑ์ต่อไปนี้:

  • ใช้ลายน้ำที่เข้ารหัสและมองไม่เห็นใน PDF
  • โอเพ่นซอร์ส
  • แพลตฟอร์มอิสระ (Linux, Windows)
  • เร็ว (ทำเครื่องหมาย 200 หน้า PDF ในเวลาไม่ถึง 1 วินาที)
  • การประมวลผลแบบแบทช์
  • ทนการโจมตีจากการรวมตัว
  • ไม่บอบบาง (เช่น PDF -> EPS -> PDF ยังมีลายน้ำอยู่)
  • มีเอกสารที่ดี (แสดงตัวอย่างประเพณี)

ไอเดียและทรัพยากร

ความคิดและการค้นพบบางอย่าง:

  • ลายน้ำการประมวลผลภาษาธรรมชาติ (NLP)
  • ใช้ซูรินาเมบนภาพที่เลือกแบบสุ่ม
  • http://openstego.sourceforge.net/cmdline.html

ปัญหาเกี่ยวกับ NLP คือข้อผิดพลาดทางไวยากรณ์สามารถนำมาใช้ ปัญหาเกี่ยวกับซูรินาเมคือว่ารูปภาพนั้นมาจากแคชรูปภาพและการสร้างแคชนั้นใหม่ด้วยภาพที่ใส่ลายน้ำดิจิตอลจะทำให้เกิดความล่าช้าเมื่อสร้าง PDF (ฉันสามารถลบภาพหนึ่งออกจากแคชได้

ขอบคุณ!


โปรดแก้ไขคำอธิบายของข้อกำหนดเล็กน้อยมิฉะนั้นจะไม่ชัดเจน "ลายน้ำที่ตรวจไม่พบ"อย่างชัดเจนไม่ใช่สิ่งที่คุณต้องการ ... มิฉะนั้นคุณจะตรวจจับได้อย่างไรถ้าคุณต้องการ?
Kurt Pfeifle

มันค่อนข้างชัดเจนว่าจุดประสงค์ของระบบการคิดของคุณคืออะไร: ตรวจสอบว่า PDF ถูกส่งผ่านไปยังผู้ใช้รายอื่นแม้ว่าใบอนุญาตของคุณจะห้ามสิ่งนี้หรือไม่? ตรวจสอบว่า PDF พิมพ์บนกระดาษหรือไม่แม้ว่าใบอนุญาตของคุณจะห้ามสิ่งนี้ ติดตามวิธีการ PDF เฉพาะผ่านอินเทอร์เน็ตและติดตามเมื่อเปิดหรือไม่ หรืออย่างอื่น?
Kurt Pfeifle

@pipitas: หากรุ่น PDF ที่ลงทะเบียนถูกปล่อยออกมาโดยไม่ได้รับอนุญาตฉันจะอยากรู้ว่าใครเป็นผู้เปิดตัว แต่ถ้าผู้คนเห็นว่า PDF มีลายน้ำแล้วลายน้ำนั้นจะกลายเป็นเรื่องง่ายที่จะหลีกเลี่ยง
Dave Jarvis

คำตอบ:


6

ฉันทำสิ่งที่คล้ายกันไม่กี่ปีที่ผ่านมา ไม่เป็นไปตามเกณฑ์ "ยาก" ทั้งหมดของคุณ มันได้ผลเช่นนี้:

  • ฉันวางพื้นที่ "คลิกได้" ที่ตรวจจับได้ยากขนาด 2x2 บนสถานที่สุ่มบางแห่งที่หนึ่งในขอบของหน้า PDF แบบสุ่ม มันไม่น่าเป็นไปได้มากที่มันถูกค้นพบโดยบังเอิญ (ท่ามกลางโหลดฮอตสปอตที่คลิกได้อื่น ๆ ที่อยู่ในรูปแบบไฟล์ PDF ... )

  • หากคุณคลิกที่ลิงค์มันจะพาคุณไปยังหน้าเว็บที่http://my.own.site/project/87245e386722ad77b4212dbec4f0e912มีสัญลักษณ์แสดงหัวข้อย่อย "errata" (ฉันพูดถึงนั่น87245e386722ad77b4212dbec4f0e912คือ MD5 แฮชของชื่อบุคคล + ข้อมูลการติดต่อที่ฉันเก็บไว้ในตารางฐานข้อมูลหรือไม่ :-)

เห็นได้ชัดว่าสิ่งนี้ไม่ได้ป้องกันการพิมพ์ + สแกน + ocr-ing หรือต่อต้านวงจร "refrying" PDF และยังขึ้นอยู่กับ "ความปลอดภัยโดยความคลุมเครือ" ในระดับหนึ่ง

นี่คือวิธีที่คุณใช้ Ghostscript เพื่อเพิ่มฮอตสปอตที่คลิกได้ดังกล่าวไปที่มุมล่างซ้ายของหน้า 1 ของ 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

ในการทำให้พื้นที่ที่คลิกได้นั้นมีขนาดใหญ่ขึ้นและการเปลี่ยนแปลงที่มองเห็นได้เหนือพารามิเตอร์ commandline เช่นนี้:

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

ยิ่งง่ายขึ้นคือการสร้างและเก็บ MD5 แฮชของ PDF ในฐานข้อมูลของคุณ จะเป็น uniq สำหรับแต่ละ PDF ที่คุณสร้างเนื่องจากเอกสาร UUID และ CreationDate และ ModDate ภายในข้อมูลเมตา แน่นอนว่าสิ่งนี้ยังอนุญาตให้ติดตาม PDF ต้นฉบับในรูปแบบดิจิทัล ...


คุณเคยเจอไฟล์ PDF มาในป่าและติดตามมันกลับมาโดยใช้เทคนิคนี้หรือไม่?
Dave Jarvis

@Dave Jarvis: ใช่ฉันทำได้ ... แต่มันไม่ใช่เรื่อง "จริงจัง" ฉันไม่มีความสนใจในการติดตาม ฉันทำมันเพื่อพิสูจน์แนวคิดเท่านั้นและหลังจากผ่านไปประมาณ 6 เดือนฉันก็ปิดเว็บเซิร์ฟเวอร์ "ติดตาม" สำหรับเซิร์ฟเวอร์ PDF ของเครือข่ายฉันตั้งค่าไว้ภายใน บริษัท ของลูกค้า "ตัวติดตาม" นั้นคล้ายคลึงกับที่อธิบายไว้ข้างต้น แต่ใช้พื้นที่ที่สามารถคลิกได้แบบเต็มหน้า ฉันเพิ่งติดตามจำนวนของ "การเข้าชม" ในไฟล์บันทึก apache ....
Kurt Pfeifle

แนวคิดที่ดี แต่โปรดทราบว่าการใช้ GhostScript บน PDF อย่างนั้นอาจทำให้ภาพตัวอย่างที่เสื่อมคุณภาพลงเนื่องจาก GhostScript ไม่สนับสนุนการไม่คลายบีบอัด (ซึ่งสูญเสียข้อมูลจากภาพที่บีบอัดในรูปแบบ JPEG) และมีแนวโน้มที่จะ ใช้การบีบอัดสไตล์ JPEG กับภาพทั้งหมด (แม้กระทั่งภาพที่เพิ่งคลายการบีบอัด) ...
SamB

@SamB: ฉันคิดว่าคุณสามารถเพิ่ม-dJPEQ=100 -dQFActor=1.0คำสั่ง Ghostscript เพื่อให้แน่ใจว่าคุณจะรักษาคุณภาพ JPEG ที่มีอยู่ได้ 100% แต่ไม่มีฉันไม่ได้สังเกตเห็นการย่อยสลายของคุณภาพของภาพใด ๆ ในของฉันไฟล์ถ้าผมใช้การตั้งค่าทั่วไป-dPDFSETTINGS=/prepressเมื่ออีกกลั่นไฟล์ PDF ใด ๆ กับ Ghostscript ....
เคิร์ต Pfeifle

[ต่อเนื่อง] และไม่มันไม่ใช่แค่การบีบอัด JPEG ที่มีให้สำหรับรูปภาพจาก Ghostscript - คุณสามารถใช้-dColorImageFilter=/FlateEncode(ซึ่งเป็น ZIP ที่ไม่มีการสูญเสีย) เพื่อแทนที่ค่าเริ่มต้น=/DCTEncode(ซึ่งเป็น JPEG ที่สูญหาย) ในรุ่น GS ที่เก่ากว่า ตั้งแต่ GS v7.21 ค่าเริ่มต้นคือ=/FlateEncodeต่อไป ... เช่นเดียวกับสีที่เป็นจริงสำหรับ-dGrayImageFilter=...( -dMonoImageFilter=...ใช้/CCITTFaxEncodeโดยค่าเริ่มต้น)
Kurt Pfeifle

1

ยากมากและฉันไม่แน่ใจว่าสิ่งนี้จะตอบคำถามของคุณได้ทั้งหมด

ฉันไม่แน่ใจเกี่ยวกับโซลูชันแบบครบวงจรที่สามารถทำได้หรือสุ่มเลือก

อย่างไรก็ตามหากฉันได้รับมอบหมายสิ่งนี้ฉันคิดว่าวิธีที่ง่ายที่สุดคือการเก็บเอกสารในรูปแบบสื่อกลางเช่น HTML ที่จัดรูปแบบหรือคล้ายกัน

เมื่อใช้ไฟล์ CSS พิมพ์หรือที่คล้ายกันคุณสามารถทำให้เลย์เอาต์เป็นเหมือนหนังสือและใช้สคริปต์บางประเภทเพื่อสุ่มรูปภาพเนื้อหาหรืออะไรก็ได้และส่วนประกอบ PDF ฝั่งเซิร์ฟเวอร์ที่ประกอบเอกสารกลับมา

ดังนั้น - ตัวอย่างเช่นเมื่อมีคนซื้อเอกสารสคริปต์ซื้อของคุณสามารถสุ่มเลือกหมายเลขที่ระบุกลไกการป้องกัน (เช่นภาพแรกภาพที่สองข้อความที่อื่น ฯลฯ ) จากนั้นสร้างลิงค์ดาวน์โหลดที่ไม่ซ้ำกัน

เมื่อลิงค์ดาวน์โหลดนั้นเรียกว่าจะตรวจสอบหมายเลขดำเนินการและรวบรวมเป็น pdf แล้วดาวน์โหลดไปยังไคลเอนต์

อีกครั้งฉันรู้ว่าสิ่งนี้จะไม่ง่าย / ตรงไปตรงมา แต่คุณไม่ได้ขออะไรที่ง่ายและนี่คือวิธีที่ดีที่สุดที่ฉันจะนึกได้


@Dave Jarvis - ฉันเข้าใจอย่างเต็มที่ว่าคุณกำลังทำอะไร ... อย่างที่ฉันพูดฉันไม่แน่ใจว่าทางออกที่ดีที่สุด แต่อย่างน้อยฉันควรพูดว่าทำงานได้ ... ไม่ไกล
William Hilsum

@Dave Jarvis - สิ่งที่ฉันพยายามที่จะพูด / รับคือว่าฉันไม่เคยเห็นวิธีที่ง่าย / วิธีเดียวที่จะทำสิ่งที่คุณต้องการ แต่ใช้ PHP / ASP.Net มันง่ายกว่าที่จะเขียนสคริปต์ / โทรบุคคลที่สาม ส่วนประกอบ ฉันคิดว่าถ้าคุณมีเอกสารทั้งหมดในรูปแบบ HTML อย่างถูกต้อง / ว่ามันจะเป็นเรื่องง่ายมากที่จะใช้องค์ประกอบ PDF ในการแปลง .... ตัวอย่างเช่นสมมติว่ามี 100 หน้าและรูปภาพในหน้า 31 คุณ อาจมีหน้า 1-30 เป็น PDF และหน้า 32-100 เป็น PDF หน้า 31 จะถูกสร้างและจัดรูปแบบในรูปแบบ html (ตามรูปแบบของส่วนที่เหลือของหนังสือ) คุณสามารถใช้ 1/2
William Hilsum

ส่วนประกอบ pdf ที่จะได้รับ PDF ชิ้นแรก, ปกปิดหน้า html, รับ PDF อันที่สองและสร้าง pdf ใหม่ที่รวมทั้งหมดเข้าด้วยกัน หน้าเว็บที่สร้างขึ้นสามารถเรียกใช้สคริปต์สามารถดำเนินการซูรินาเม (ไม่แน่ใจในคำกริยา!) หรืออะไรก็ได้ที่คุณต้องการ ... มีส่วนประกอบ pdf (ฟรีและจ่ายเงิน) - นี่คือตัวอย่างหนึ่ง ... componentone.com/SuperProducts / PDFฉันหวังว่าสิ่งนี้จะทำให้ชัดเจนยิ่งขึ้นในสิ่งที่ฉันพยายามจะทำ - ยากมากที่จะอธิบาย 2/2
William Hilsum

@Dave Jarvis - เอ๊ะไม่เหมือน ... อย่างที่ฉันบอกยากมากที่จะอธิบาย .... ส่วนประกอบ PDF บางส่วนนั้นน่าอัศจรรย์พร้อมกับ CSS / รูปแบบการพิมพ์ ตัวอย่างเช่นดูที่ Moodle เป็นไปได้ที่จะจัดรูปแบบหน้าเว็บเต็มรูปแบบและทำการพิมพ์ออกมาเหมือนหนังสือ / ตามสไตล์ จากนั้นคุณสามารถใช้องค์ประกอบรูปแบบไฟล์ PDF เพื่อการส่งออก / บันทึกตรงเหมือนว่ามันควรจะดูที่ผลสุดท้าย คุณสามารถสร้างรูปภาพที่คุณต้องการและมีข้อความและรวบรวมมัน (ต่อเนื่องกับผู้ใช้) เป็นไฟล์ PDF ไฟล์เดียว ฉันเพิ่งพูดถึงเว็บ / php / asp.net เพราะฉันคิดว่ามันเป็นวิธีที่ง่ายที่สุดในการเข้าถึงสิ่งที่คุณต้องการ
William Hilsum

@Dave Jarvis: ฉันเดาว่าคุณไม่ได้ใช้ pdfTeX งั้นเหรอ? (หรือคุณกังวลเกี่ยวกับผู้ใช้ที่ทำ pdf-> ps-> การแปลง pdf มากขึ้นและทำให้รูปภาพตัวอย่างเสื่อมคุณภาพลงในกระบวนการหรือไม่) อย่างไรก็ตาม PS-> การแปลงไฟล์ PDF ไม่ภาพมักจะทำให้เสื่อมเสียเนื่องจาก GhostScript ไม่เพียงพอที่สมาร์ทเพื่อรักษาภาพ JPEG สไตล์ในรูปแบบการบีบอัดและมีแนวโน้มที่จะนำไปใช้โดยอัตโนมัติบีบอัดไฟล์ JPEG สไตล์ภาพใด ๆ ที่เกิดขึ้นในการป้อนข้อมูล (เห็นได้ชัดว่าสามารถกลั่น Distiller ให้ปล่อยภาพสไตล์ JPEG เพียงอย่างเดียว แต่ไม่มีใครมีมันจริงหรือ?)
SamB
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.