PDF में बुकमार्क जोड़ें और संपादित करें


22

बुकमार्क के साथ कुछ पीडीएफ फाइलों से मेटाडेटा प्राप्त करके pdftk, मैं पीडीएफ मेटाडेटा में बुकमार्क के प्रारूप का निरीक्षण करता हूं। इसलिए मैं अनुमान लगा रहा हूं कि pdftkपीडीएफ फाइल के बुकमार्क जोड़ना और संपादित करना संभव है।

यहां तीन चरण दिए गए हैं जिनका मैं अनुसरण करता हूं:

  1. मैं सबसे पहले मेटाडाटा (यदि कोई हो तो बुकमार्क सहित) एक पीडीएफ फाइल से एक पाठ फ़ाइल में प्राप्त करता हूं pdftk in.pdf dump_data > in.info
  2. इसके बाद मैं मेटाडेटा टेक्स्ट फ़ाइल में कुछ बुकमार्क जोड़ देता हूं in.info, जिससे इसे बदल देता हूं

    InfoKey: Creator
    InfoValue: PScript5.dll Version 5.2
    InfoKey: Title
    InfoValue: SSReader Print.
    InfoKey: Producer
    InfoValue: Acrobat Distiller 7.0 (Windows)
    InfoKey: Author
    InfoValue: Administrator
    InfoKey: ModDate
    InfoValue: D:20050605073244+08'00'
    InfoKey: CreationDate
    InfoValue: D:20050605073244+08'00'
    PdfID0: 591a87c91dc76881fdf2ccf3811e72a5
    PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72
    NumberOfPages: 400
    PageLabelNewIndex: 1
    PageLabelStart: 1
    PageLabelNumStyle: DecimalArabicNumerals
    

    सेवा मेरे

    InfoKey: Creator
    InfoValue: PScript5.dll Version 5.2
    InfoKey: Title
    InfoValue: SSReader Print.
    InfoKey: Producer
    InfoValue: Acrobat Distiller 7.0 (Windows)
    InfoKey: Author
    InfoValue: Administrator
    InfoKey: ModDate
    InfoValue: D:20050605073244+08'00'
    InfoKey: CreationDate
    InfoValue: D:20050605073244+08'00'
    PdfID0: 591a87c91dc76881fdf2ccf3811e72a5
    PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72
    NumberOfPages: 400
    BookmarkBegin
    BookmarkTitle: Front cover
    BookmarkLevel: 1
    BookmarkPageNumber: 1
    BookmarkBegin
    BookmarkTitle: About the Author
    BookmarkLevel: 1
    BookmarkPageNumber: 5
    BookmarkBegin
    BookmarkTitle: Title page
    BookmarkLevel: 1
    BookmarkPageNumber: 6
    BookmarkBegin
    BookmarkTitle: Copyright page
    BookmarkLevel: 1
    BookmarkPageNumber: 7
    BookmarkBegin
    BookmarkTitle: Foreword
    BookmarkLevel: 1
    PageLabelNewIndex: 1
    PageLabelStart: 1
    PageLabelNumStyle: DecimalArabicNumerals
    
  3. फिर मैं संपादित मेटाडेटा को वापस पीडीएफ फाइल में डालने की कोशिश करता हूं pdftk in.pdf update_info in.info output out.pdf

लेकिन जब मैं नई पीडीएफ फाइल out.pdfको ई- मेल या एडोब रीडर में खोलता हूं, तो नई पीडीएफ फाइल में कोई बुकमार्क नहीं होता है।

अगर मुझे नई पीडीएफ़ फ़ाइल से मेटाडेटा मिलता out.pdfहै pdftk out.pdf dump_data > out.info, तो इसमें कोई बुकमार्क नहीं होगा out.info। ऐसा लगता है कि बुकमार्क सफलतापूर्वक जोड़े नहीं गए थे।

मैं सोच रहा था कि क्या कुछ गलतियाँ हैं? मैं पीडीएफ फाइल के बुकमार्क कैसे जोड़ और संपादित कर सकता हूं, जरूरी नहीं कि पीडीएफटीके द्वारा?


1
इस छोटे चित्रमय उपकरण ने मेरे लिए काम किया। (पीडीएफ मॉड 0.9.1) apps.fedoraproject.org/packages/pdfmod
अभिजीत

जवाबों:


12

यह मुझे संस्करण १.४५ (२०१२-१२-०६) से दिखता है, pdftk update_fofo कमांड के माध्यम से बुकमार्क के संशोधन की अनुमति देता है:

अब आप update_info का उपयोग करके PDF के बुकमार्क जोड़ या बदल सकते हैं।

के माध्यम से: http://www.pdflabs.com/docs/pdftk-version-history/


3
यह मेरे लिए बहुत अच्छा काम किया। BookmarkBeginप्रत्येक बुकमार्क प्रविष्टि गायब होने से पहले टैग के ऊपर इनपुट फ़ाइल में इसे जोड़ना चाहिए ।
danielp

4

jPDFtweak (जावा, इसलिए यूनिक्स / लिनक्स पर चलता है) बुकमार्क को बदल सकता है, लेकिन मुझे नहीं पता कि क्या आप इसके बारे में कुछ भी लिख सकते हैं।

स्क्रिप्टिंग के लिए, मुझे लगता है कि आपका केवल मूल यूनिक्स / लिनक्स विकल्प पीडीएफ़एक्सएक्स के साथ पीडीएफ़एक्स पैकेज होगा। लेकिन अगर आप पहले से ही एक LaTeX उपयोगकर्ता नहीं हैं, तो यह सीखने की अवस्था है।

संपादित करें: वास्तव में यह भूत के साथ संभव हो सकता है: यहां या यहां या यहां देखें


4

यदि आप अभी भी उन यूनिक्स स्क्रिप्ट के साथ चिपके रहते हैं, तो

  1. से निकाला गया बुकमार्क डेटा निकालें pdftk
  2. डंप किए गए बुकमार्क डेटा को pdfmark प्रारूप में बदलने के लिए एक अतिरिक्त स्क्रिप्ट लिखें, जिसे घोस्टस्क्रिप्ट कमांड gsस्वीकार किया जाता है।
  3. gsउन्हें स्क्रिप्ट के साथ एक साथ मिलाने के लिए स्क्रिप्ट का उपयोग करें

Http://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/ पर एक नज़र डालें कि स्क्रिप्ट pdf-merge.pyवही करें जो आप (या मैं) चाहते हैं।

pdf-merge.py --output=merged.pdf input1.pdf input2.pdf

उनकी स्क्रिप्ट में कुछ मामूली सुधार किए जा सकते थे

  1. यूनिकोड हैंडलिंग
  2. आउटपुट बुकमार्क फ़ाइलें, ताकि लोग इसे भी समायोजित कर सकें

वैसे भी, यह काम करना चाहिए


एक उत्थान! धन्यवाद! मुझे आपकी स्क्रिप्ट का इंतजार है!
टिम

लगता है लिंक काम नहीं कर रहा है। क्या आप कृपया इसे ठीक कर सकते हैं?
फिश मॉनीटर

4

pdftk निश्चित रूप से सही उपकरण है (सही सिंटैक्स के साथ):

BookmarkBegin
BookmarkTitle: Chapter 1
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: Paragraph 1.1
BookmarkLevel: 2
BookmarkPageNumber: 1

2

कालेब,

जहां तक ​​मैं समझता हूं, पीडीएफ युक्ति के अनुसार बुकमार्क को एक नैदानिक ​​उपकरण के माध्यम से इंजेक्ट नहीं किया जा सकता है pdftk। मेटाडेटा को अध्याय और लैंडिंग लैंडिंग एंकर को संदर्भित करने के लिए अद्यतन करना जो कि मौजूद नहीं है, निश्चित रूप से काम नहीं करेगा, यह आपके पीडीएफ को असंगत या अनपेक्षित भी बना सकता है।

मैंने java + iText पुस्तकालयों का उपयोग करने के लिए समाप्त किया, जो आप इस ट्यूटोरियल के अनुसार सुझा रहे हैं, लेकिन हम रोजाना सैकड़ों pdfs के साथ काम कर रहे हैं, इसलिए इसे स्वचालित करने की आवश्यकता है। यदि आप वन-ऑफ़ कर रहे हैं, तो Adobe Acrobat को ऐसा करने में सक्षम होना चाहिए।


2

इन सभी अच्छे उत्तरों को संक्षेप में प्रस्तुत करने के लिए:

नहीं है bmconverter परियोजना GitHub पर है कि विभिन्न पीडीएफ बुकमार्क प्रारूपों में बदल सकते हैं। यह pdftk आउटपुट को jpdftweak फॉर्मेट में बदल सकता है, हालाँकि यदि आप jpdftweak का उपयोग करेंगे, तो आपको pdftk आउटपुट को csv में बदलने की आवश्यकता नहीं होगी, क्योंकि आप jpdftweak से सभी काम कर सकते हैं।

दुर्भाग्य से pdfmark परियोजना द्वारा समर्थित नहीं है, लेकिन सौभाग्य से किसी ने bmconverter मुद्दों में स्क्रिप्ट पोस्ट की है जो पीडीएफ़के आउटपुट को पीडीएफ में बदल सकती है। इसलिए घोस्टस्क्रिप्ट बैच विकल्प एक विकल्प है


2

pdftkलिखने के लिए बुकमार्क प्रारूप थोड़ा थकाऊ है। इसके बजाय मैं का उपयोग कर अपने ही स्क्रिप्ट बनाने bash, sed, pdftkऔर python3। इसे इस रेपो पर देखें : https://github.com/SiddharthPant/booky

तो अब मैं bkmrks.txtइस तरह से एक टेक्स्ट फाइल ( ) बना सकता हूं जो 1000 पेज की पीडीऍफ़ के लिए भी लिखने में सिर्फ 5 मिनट का समय लेती है।

{
  Title1, 1
  Title2, 2
  {
    Subtitle1, 3
    Subtitle2, 4
    {
      SubSubtitle1, 5
      ...
    }
  }
}

और फिर मेरी स्क्रिप्ट का उपयोग करें

./booky.sh pdf_file.pdf bkmrks.txt

यह स्वचालित रूप से एक पीडीएफ ( pdf_file_new.pdf) बनाता है जिसमें मेरे बुकमार्क हैं।


1

जैसा BookmarkBeginकि प्रत्येक बुकमार्क प्रविष्टि से पहले जोड़ें

BookmarkBegin
BookmarkTitle: Front cover
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
    ⋮

0

चरण 1 में आपने जो रीडायरेक्ट किया था, वह update_info को सही ढंग से काम नहीं करने का कारण बनेगा। आपको आउटपुट फ़ाइल को pdftk के बजाय निर्दिष्ट करने की आवश्यकता है:

pdftk in.pdf dump_data output in.info

इसी तरह के प्रश्न से इस उत्तर को देखें: /programming//a/30308964/3158933

फ़ाइलें जो मैंने एक रीडायरेक्ट का उपयोग करके बनाई हैं, उनका आकार थोड़ा बड़ा है और pdftk को एक "चेतावनी: अनपेक्षित केस 1 इन लोडडैटाफ़ाइल () जारी करने के लिए, अद्यतन करते समय" संदेश जारी रखें।

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