कमांड लाइन से pdf मेटाडेटा को कैसे संपादित करें?


82

मुझे पीडीएफ-फाइलों के मेटाडेटा के संपादन के लिए कमांड लाइन टूल की आवश्यकता है।

मैं इस डिवाइस पर अपने नोट्स और मिनट लिखने के लिए Aiptek MyNote प्रीमियम टैबलेट का उपयोग कर रहा हूं, बाद में उन्हें आयात करें और उन्हें एक सरल स्क्रिप्ट के साथ inkscape और ghostscript का उपयोग करके स्वचालित रूप से पीडीएफ में परिवर्तित करें।

क्या पीडीएफ़ मेटाडेटा में कुछ श्रेणियां जोड़ने के लिए कोई कमांड लाइन टूल है, इसलिए मैं बाद में पीडीऍफ़ (जैसे सूक्ति के साथ) श्रेणियों के आधार पर पा सकता हूं?

अद्यतन: मैंने pdftk के साथ समाधान की कोशिश की और यह काम करता है, लेकिन ऐसा लगता है कि सूक्ति-पीडीएफ-मेटाडेटा का ध्यान नहीं रखता है। वहाँ एक तरीका है सूक्ति-कि ऐसा करने के लिए है?

जवाबों:


100

एक्सफ़ोलटूल को आज़माएं, यह रिपॉजिटरीज़ में पैकेज लिबिमेज-एक्सफ़िल्टल-पर्ल से उपलब्ध है।

एक उदाहरण के रूप में, यदि आपके पास एक pdf फ़ाइल है, जिसे Drawing.pdf कहा जाता है और आप इसके मेटाडेटा को अपडेट करना चाहते हैं, तो इस तरह से यूटिलिटी, एक्सफ़िल्टूल का उपयोग करें:

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

किसी कारण से दर्ज किया गया विषय पीडीएफ फाइल में मेटाडेटा के कीवर्ड फ़ील्ड में समाप्त होता है। कुछ मामलों में समस्या नहीं है, यहां तक ​​कि वांछनीय भी है, हालांकि, यह समस्याग्रस्त हो सकता है, बेदखल हो सकता है और नॉटिलस मेटाडेटा पूर्वावलोकनकर्ता यह नहीं दिखाता है, लेकिन एडोब एक्रोबेट दर्शक और पीडीएफ-एक्सचेंज दर्शक करता है।

यदि आप उपयोग नहीं करते हैं तो प्रोग्राम मूल फ़ाइल का बैकअप बनाएगा; -overwrite_originalस्विच, इसका मतलब है कि फ़ोल्डर में एक डुप्लिकेट मौजूद होगा जहां अपडेट किया गया पीडीएफ है। ऊपर के उदाहरण से; नामक एक फ़ाइल; ड्राइंग .pdf_original बनाई जाएगी।

अपने स्वयं के जोखिम पर ओवरराइट स्विच का उपयोग करें, मेरा सुझाव केवल इस मामले में इस फाइल को बेहतर स्थान पर स्थानांतरित करने के लिए इसका उपयोग करना और कुछ स्क्रिप्ट करना नहीं है।


16
ध्यान दें कि: " सभी मेटाडेटा संपादन प्रतिवर्ती हैं । हालांकि इसे आम तौर पर एक लाभ माना जाएगा, यह एक संभावित सुरक्षा समस्या है क्योंकि पुरानी जानकारी वास्तव में फ़ाइल से कभी नहीं हटाई जाती है।"
नट्टी के बारे में अखरोट

5
@nuttyaboutnatty यदि आप सभी अवशेष और अप्रयुक्त मेटाडेटा प्रविष्टियों को शुद्ध करना चाहते हैं, तो आप एक्सफ़ॉल से इसे संसाधित करने के बाद पीडीएफ फाइल को सही से रैखिक कर सकते हैं। इसका वर्णन इस गीथ्ब जिस्ट में अधिक विस्तार से किया गया है ।
Glutanimate

9
@nuttyaboutnatty खैर, बेशक यह एक आधिकारिक स्रोत नहीं है, लेकिन यह केवल इसलिए है क्योंकि किसी ने कभी भी एक लिखने का समय नहीं लिया। हालांकि, मैं आश्वस्त कर सकता हूं कि लेखक द्वारा वर्णित विधि काम करती है। इसे स्वयं आज़माएँ: 1.) एक पीडीएफ लें जिसमें कुछ टैग हों और सभी मेटाडेटा को "हटा दें" exiftool -overwrite_original -all:all="" file.pdf; 2.) exiftool -PDF-update:all= file.pdfयह पुष्टि करने के लिए उपयोग करें कि अभी भी पुरानी मेटाडेटा मौजूद है; 3.) के साथ फ़ाइल को रैखिक करें qpdf --linearize file.pdf; 4.) फिर से जांचें, जैसे आपने 2 में किया था); सभी मेटाडेटा को चला जाना चाहिए;
Glutanimate

4
5.) पुष्टि करते हैं कि फ़ाइल (पीडीएफ शब्दकोश को देखकर सभी मेटाडाटा के पर्ज किया गया है pdfinfo -meta file.pdf)
Glutanimate

1
अच्छी तरह से काम। मैं नियमित रूप से मेटाडाटा को एक पीडीएफ से दूसरे पीडीएफ में कॉपी करना चाहता हूं, जिस स्थिति exiftool -overwrite_original -tagsFromFile <srcfile> <destfile>में मुझे आवश्यकता है (विकल्प -overwrite_originalमूल को अधिलेखित करता है <destfile>)।
एस्ट्रोफ्लोयड

15

आप मेटाडेटा का उपयोग करके संपादित कर सकते हैं pdftkupdate_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

वहाँ हो सकता है, लेकिन मुझे नहीं मिला।
ओली

pdftkमेटाडेटा में यूनिकोड वर्ण प्रतीत होते हैं।
मैकेनिकल घोंघा

1
मुझे pdftkनए pdfs (नए संस्करण AESV2 के माध्यम से एन्क्रिप्ट किए गए हैं) का उपयोग करने में कुछ समस्या थी । ऐसा लगता है जैसे यह बंद हो गया है। exiftoolबेहतर काम कर रहा था।
s1lv3r

2
pdftk का उपयोग करने के लिए, आपको क्या करने की आवश्यकता है: 1) pdftk book.pdf dump_data output report.txt2) pdftk book.pdf update_info report.txt output bookcopy.pdf
edit.txt

6

घोस्टव्यू का उपयोग करना

इस सामग्री के साथ "pdfmark" नामक एक फ़ाइल बनाएँ:

[ /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फाइल को एक पीडीएफ, पीएस या ईपीएस इनपुट फाइल के साथ मिलाएं:

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

स्रोत: http://milan.kupcevic.net/ghostscript-ps-pdf/


0

pdftkविधि पर विस्तृत करने के लिए , जो अच्छा है क्योंकि यह आपको वह सब कुछ दिखाता है जो सेट किया जा रहा है, उसी समय जैसा कि आप अपनी पसंद के किसी भी चीज़ को बदलने की अनुमति देते हैं, यहां एक स्क्रिप्ट है (आपकी .bashrcया अन्य उपनामों की फ़ाइल के लिए) इसे एक कमांड के साथ करने के लिए। यह उस फ़ाइल का एक नया संस्करण बनाता है जिसे आप संपादित करना चाहते हैं, मेटाडेटाफ़ाइल के साथ अपने पसंदीदा संपादक को खोलता है, और फिर अपने परिवर्तनों को लागू करता है और मूल पीडीएफ के समान ही संशोधित पीडीएफ फाइल पर फ़ाइल निर्माण / संशोधन समय सेट करता है। इसका उपयोग करने के लिए, अपनी .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अपने होम फोल्डर में फ़ाइल के ऊपर परिभाषा रखें, फिर एक नया टर्मिनल खोलें और यह उपयोग करने के लिए तैयार होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.