วิธีแก้ไข pdf ข้อมูลเมตาจากบรรทัดคำสั่ง?


83

ฉันต้องการเครื่องมือบรรทัดคำสั่งสำหรับแก้ไขข้อมูลเมตาของไฟล์ pdf

ฉันใช้แท็บเล็ต Aiptek MyNote Premium สำหรับการเขียนบันทึกย่อและนาทีบนอุปกรณ์นี้นำเข้ามาในภายหลังและแปลงเป็น pdf โดยอัตโนมัติด้วยสคริปต์ง่ายๆโดยใช้ inkscape และ ghostscript

มีเครื่องมือบรรทัดคำสั่งเพื่อเพิ่มหมวดหมู่บางอย่างลงในเมตาดาต้าของ pdf หรือไม่ดังนั้นฉันจึงสามารถค้นหา pdf ในภายหลัง (เช่นกับ gnome-do) ตามหมวดหมู่ได้หรือไม่

อัปเดต: ฉันลองใช้วิธีแก้ปัญหาด้วย pdftk แล้วใช้งานได้ แต่ดูเหมือนว่า gnome-do จะไม่ดูแล pdf-metadata มีวิธีที่จะทำให้ gnome-do ทำเช่นนั้นได้ไหม?

คำตอบ:


101

ลอง exiftool ดูได้จาก package libimage-exiftool-perl ในที่เก็บ

ตัวอย่างเช่นหากคุณมีไฟล์ PDF ชื่อ drawing.pdf และคุณต้องการอัปเดตข้อมูลเมตาของมันให้ใช้โปรแกรมอรรถประโยชน์ exiftool ด้วยวิธีนี้:

exiftool -Title="This is the Title" -Author="Happy Man" -Subject="PDF Metadata" drawing.pdf

ด้วยเหตุผลบางประการเรื่องที่ป้อนจะสิ้นสุดลงในฟิลด์คำหลักของข้อมูลเมตาในไฟล์ pdf ไม่ใช่ปัญหาในบางกรณีแม้เป็นที่น่าพอใจอย่างไรก็ตามนี่อาจเป็นปัญหาเห็นได้และผู้ดูตัวอย่าง nautilus metadata ไม่แสดงสิ่งนี้ แต่โปรแกรมดู Adobe Acrobat และโปรแกรมดู PDF-XChange ไม่

โปรแกรมจะสร้างข้อมูลสำรองของไฟล์ต้นฉบับหากคุณไม่ใช้; -overwrite_originalสวิตช์ซึ่งหมายความว่าจะมีไฟล์ซ้ำกันในโฟลเดอร์ที่มีไฟล์ PDF ที่อัปเดต จากตัวอย่างด้านบน ไฟล์ชื่อ; drawing.pdf_original จะถูกสร้างขึ้น

ใช้สวิตช์เขียนทับในความเสี่ยงของคุณเองข้อเสนอแนะของฉันคือไม่ใช้และเขียนสคริปต์บางอย่างเพื่อย้ายไฟล์นี้ไปยังตำแหน่งที่ดีขึ้นในกรณีที่


16
โปรดทราบว่า: "การแก้ไขข้อมูลเมตาทั้งหมดสามารถย้อนกลับได้แม้ว่าโดยปกติจะถือว่าเป็นข้อได้เปรียบ แต่ก็เป็นปัญหาด้านความปลอดภัยที่อาจเกิดขึ้นเนื่องจากข้อมูลเก่าไม่ถูกลบออกจากไฟล์จริง ๆ "
บ๊องเกี่ยวกับ natty

5
@ nuttyaboutnatty หากคุณต้องการกำจัดรายการเมทาดาทาที่เหลือและไม่ได้ใช้งานทั้งหมดคุณสามารถทำให้ไฟล์ PDF เป็นเส้นตรงหลังจากประมวลผลด้วย exiftool นี้มีการอธิบายในรายละเอียดในนี้เค้า Github
Glutanimate

9
@ nuttyaboutnatty แน่นอนว่ามันไม่ใช่แหล่งข้อมูลที่เชื่อถือได้ แต่เป็นเพราะไม่มีใครเคยใช้เวลาเขียน อย่างไรก็ตามฉันสามารถมั่นใจได้ว่าวิธีการที่อธิบายโดยผู้เขียนได้ผล ลองด้วยตัวคุณเอง: 1. ) ใช้ PDF ที่มีแท็กและ "ลบ" ข้อมูลเมตาทั้งหมดด้วยexiftool -overwrite_original -all:all="" file.pdf; 2. ) ใช้exiftool -PDF-update:all= file.pdfเพื่อยืนยันว่ายังมีเมทาดาทาเก่าอยู่ 3. ) ทำให้ไฟล์เป็นเส้นตรงด้วย qpdf --linearize file.pdf; 4. ) ตรวจสอบอีกครั้งเหมือนที่คุณทำในข้อ 2); ข้อมูลเมตาทั้งหมดควรหายไป
Glutanimate

4
5. ) ยืนยันว่าไฟล์ถูกล้างข้อมูลเมตาทั้งหมดโดยดูที่พจนานุกรม PDF ( pdfinfo -meta file.pdf)
ลูตาเมต

1
ทำงานได้อย่างสมบูรณ์แบบ ฉันต้องการคัดลอกข้อมูลเมตาจาก PDF หนึ่งไปยังอีกรูปแบบหนึ่งเป็นประจำซึ่งในกรณีนี้exiftool -overwrite_original -tagsFromFile <srcfile> <destfile>คือสิ่งที่ฉันต้องการ (ตัวเลือก-overwrite_originalจะเขียนทับต้นฉบับ<destfile>)
AstroFloyd

15

pdftkคุณสามารถแก้ไขข้อมูลเมตาโดยใช้ ตรวจสอบupdate_infoพารามิเตอร์ สำหรับไฟล์ข้อมูลด้านล่างเป็นตัวอย่าง:

InfoKey: Title
InfoValue: Mt-Djing: multitouch DJ table
InfoKey: Subject
InfoValue: Dissertation for Master degree
InfoKey: Keywords
InfoValue: DJing, NUI, multitouch, user-centered design
InfoKey: Author
InfoValue: Pedro Lopes

( ที่มา )


1
ตกลงหมายความว่าฉันต้องส่งออกข้อมูลเมตาไปยังเท็กซ์ไฟล์แก้ไขและนำเข้าไฟล์ข้อความอีกครั้ง มีวิธีตั้งค่าเมทาดาทาโดยตรงจากบรรทัดคำสั่งหรือไม่
bdr529

อาจมี แต่ฉันหามันไม่เจอ
Olli

pdftkดูเหมือนว่าจะเป็นอักขระ Unicode ในข้อมูลเมตา
หอยทากเครื่องกล

1
ฉันมีปัญหาในการใช้pdftkไฟล์ PDF ใหม่ (เวอร์ชั่นที่ใหม่กว่าถูกเข้ารหัสผ่าน AESV2) ดูเหมือนว่ามันจะหยุด exiftoolทำงานได้ดีขึ้น
s1lv3r

2
เพื่อใช้ pdftk สิ่งที่คุณต้องทำคือ: 1) pdftk book.pdf dump_data output report.txt2) แก้ไข report.txt 3)pdftk book.pdf update_info report.txt output bookcopy.pdf
craq

6

ใช้ Ghostview

สร้างไฟล์ชื่อ“ pdfmarks” ด้วยเนื้อหานี้:

[ /Title (Document title)
  /Author (Author name)
  /Subject (Subject description)
  /Keywords (comma, separated, keywords)
  /ModDate (D:20061204092842)
  /CreationDate (D:20061204092842)
  /Creator (application name or creator note)
  /Producer (PDF producer name or note)
  /DOCINFO pdfmark

จากนั้นรวมpdfmarksไฟล์นี้เข้ากับไฟล์อินพุต PDF, PS หรือ EPS:

gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf no_marks.pdf pdfmarks

ที่มา: http://milan.kupcevic.net/ghostscript-ps-pdf/


0

ในการอธิบายรายละเอียดเกี่ยวกับpdftkวิธีการที่ดีเพราะมันแสดงให้คุณเห็นทุกสิ่งที่ถูกตั้งค่าในเวลาเดียวกับที่ช่วยให้คุณสามารถเปลี่ยนแปลงสิ่งที่คุณต้องการนี่คือสคริปต์ (สำหรับ.bashrcไฟล์ของคุณหรือนามแฝงอื่น ๆ ) ที่จะทำมันด้วยคำสั่งเดียว สิ่งนี้จะสร้างเวอร์ชันใหม่ของไฟล์ที่คุณต้องการแก้ไขเปิดตัวแก้ไขที่คุณชื่นชอบด้วย metadatafile จากนั้นปรับใช้การเปลี่ยนแปลงของคุณและตั้งค่าเวลาในการสร้าง / แก้ไขไฟล์ในไฟล์ PDF ที่แก้ไขให้เหมือนกับต้นฉบับ หากต้องการใช้งานหลังจาก.bashrcพิมพ์ไฟล์ของคุณใหม่เพียงแค่พิมพ์

editPDFmetadata myfile.pdf

นี่คือนามแฝง:

editPDFmetadata() {
OUTPUT="${1}-new.pdf"
METADATA="tmp${1}-report.txt"
pdftk ${1} dump_data output $METADATA
$EDITOR $METADATA
pdftk ${1} update_info $METADATA  output $OUTPUT
touch -r ${1} ${OUTPUT}
}

เพียงวางคำจำกัดความข้างต้นลงใน.bashrcไฟล์ในโฟลเดอร์บ้านของคุณจากนั้นเปิดเทอร์มินัลใหม่และจะพร้อมใช้งาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.