2011-05-27 6 views
6

में मौजूदा पीडीएफ के लिए रूपरेखा/टीओसी बनाएं I पीडीपीडीएफ का उपयोग कई पीडीएफ फाइलों को एक में विलय करने के लिए कर रहा हूं। यह बहुत अच्छा काम करता है, लेकिन मुझे जेनरेट की गई पीडीएफ फाइल में सामग्री/रूपरेखा/बुकमार्क्स की एक तालिका जोड़ने की भी आवश्यकता होगी।पायथन

पीईपीडीएफ ने केवल रूपरेखाओं के लिए समर्थन पढ़ा है। Reportlab मुझे उन्हें बनाने की अनुमति देगा, लेकिन ओपनसोर्स संस्करण पीडीएफ फाइलों को लोड करने का समर्थन नहीं करता है, इसलिए यह किसी मौजूदा फ़ाइल में रूपरेखा जोड़ने के लिए काम नहीं करता है।

क्या कोई तरीका है कि मैं पाइथन या किसी लाइब्रेरी का उपयोग करके किसी मौजूदा पीडीएफ में रूपरेखा जोड़ सकता हूं?

+0

मेरे सिर के ऊपर बंद, मुझे लगता है कि कम से कम गैर अजगर यह करने के लिए समाधान है ताकि आप अपने पीडीएफ बनाने और उसके बाद आप रूपरेखा के लिए क्या चाहते हैं निर्दिष्ट करने के लिए कुछ विकल्पों के साथ एक कमांड चला सकते हैं कर रहे हैं। अच्छा नहीं है, लेकिन शायद कम से कम आपको काम पूरा करने देना चाहिए। –

+1

यह आपके लिए काम कर सकता है या नहीं भी हो सकता है हालांकि इंडेक्स और बुकमार्क पीढ़ी का समर्थन करने के लिए [link] (http://www.florian-diesch.de/software/pdfrecycle/) pdfrecycle दावों का प्रयास करें। – secumind

उत्तर

2

हमें WeasyPrint में एक ही समस्या थी: कैरो पीडीएफ फाइलें उत्पन्न करता है लेकिन बुकमार्क/रूपरेखा या हाइपरलिंक्स का समर्थन नहीं करता है। अंत में हम बुलेट को थोड़ा सा करते हैं, PDF spec पढ़ें, और इसे स्वयं किया।

WeasyPrint's pdf.py में एक साधारण पीडीएफ पार्सर और लेखक है जो मौजूदा दस्तावेज़ों में पीडीएफ "ऑब्जेक्ट्स" को जोड़/ओवरराइड कर सकता है। यह पीडीएफ "अपडेट" तंत्र का उपयोग करता है और केवल फाइल के अंत में संलग्न होता है।

यह मॉड्यूल केवल आंतरिक उपयोग के लिए बनाया गया था लेकिन मैं इसे अन्य परियोजनाओं में उपयोग करना आसान बनाने के लिए इसे पुन: सक्रिय करने के लिए खुला हूं।

हालांकि पार्सर कुछ शॉर्टकट लेता है और सभी वैध पीडीएफ फाइलों को पार्स नहीं कर सकता है। यदि पीईपीडीएफ का उत्पादन कैरो के रूप में अच्छा नहीं है तो इसे अनुकूलित करने की आवश्यकता हो सकती है। मॉड्यूल के docstring से:

  • सभी नई पंक्तियां हैं '\ n',:

    बल्कि किसी भी मान्य PDF पार्स करने के लिए कोशिश कर रहा से, हम कुछ मान्यताओं इसी क्रम में काहिरा के लिए पकड़ कोड को आसान बनाने के लिए कर नहीं '\ r' या '\ r \ n'

  • संख्या 0 (जो हमेशा मुक्त होता है) के अलावा कोई "मुक्त" ऑब्जेक्ट नहीं है।
  • अधिकांश सफेद स्पेस विभाजक एक 0x20 अंतरिक्ष से बने होते हैं।
  • अप्रत्यक्ष शब्दकोश वस्तुओं में ऑब्जेक्ट के अंत को चिह्नित करने के अलावा 'एंडोब' के अलावा किसी पंक्ति की शुरुआत में '>>' नहीं होता है। ( में अन्य शब्द, उप-शब्दकोशों के लिए '>>' मार्कर इंडेंट किए गए हैं।)
  • पेज ट्री फ्लैट है: रूट पेज नोड के सभी बच्चे पेज ऑब्जेक्ट्स हैं, पेज पेड़ नोड्स नहीं।