2008-10-06 15 views
6

के साथ पीडीएफ फ़ाइल में सभी बुकमार्क के लिए गंतव्यों का निर्माण करें मैं कुछ (जावा) कोड लिखना चाहता हूं जो पीडीएफ दस्तावेज़ लेता है, और सभी बुकमार्क से नामित गंतव्य बनाता है। मुझे लगता है कि iText API ऐसा करने का सबसे आसान तरीका है, लेकिन मैंने पहले कभी एपीआई का उपयोग नहीं किया है।iText API

iText API के साथ इस तरह के कोड को लिखने के बारे में आप कैसे जाएंगे? क्या iText मौजूदा पीडीएफ में हेरफेर करने के लिए आवश्यक पार्सिंग कर सकता है? जोड़तोड़ मैं सोच रहा हूँ की तरह हैं:

  • ओपन,
  • बुकमार्क ढूंढें,
  • स्थलों बनाएँ,
  • सहेजें,
  • बंद।

या क्या कोई अलग एपीआई बेहतर होगा?

उत्तर

3

मैं आपको बस इतना चेतावनी दूंगा कि आप इससे निराश हो सकते हैं। iText वास्तव में एक पार्सर के रूप में उपयोग करने का इरादा नहीं है। यह पूरी तरह से नया पीडीएफ दस्तावेज़ बनाने के लिए वास्तव में अधिक है, लेकिन आप इसमें एक झटका लगा सकते हैं।

iText का उपयोग शुरू करने के लिए, आप मौजूदा पीडीएफ दस्तावेज़ को संशोधित करने में सक्षम नहीं होंगे। क्या आप कर सकते हैं, हालांकि, अपनी इच्छित अतिरिक्त सुविधाओं के साथ प्रतिलिपि बनाना है। (किसी और बेहतर जानता है, कृपया मुझे पता है यह मुझे पागल ड्राइव करते हैं,।)

आप क्या करना चाहते हैं अपने स्रोत फ़ाइल पर एक इनपुट स्ट्रीम से एक PdfReader वस्तु बनाने के लिए है। फिर अपने गंतव्य के लिए एक पीडीएफकॉपी ऑब्जेक्ट बनाएं (जो केवल एक विस्तारित पीडीएफवाइटर है जो किसी मौजूदा स्रोत से डेटा अधिक सुविधाजनक बनाता है)।

जहाँ तक मैं कह सकता हूं, बुकमार्क IText से प्राप्त नहीं किए जा सकते हैं। एक और पुस्तकालय की आवश्यकता हो सकती है। मुझे लगता है कि jpedal में उन्हें निकालने की क्षमता हो सकती है (यह उन्हें एक XML दस्तावेज़ के रूप में प्राप्त कर सकती है, जिसे आप चाहते हैं कि प्राप्त करने के लिए आपको पार्स करना पड़े।) हालांकि आप उन्हें प्राप्त करते हैं, फिर आप उन्हें java.util में जोड़ सकते हैं। सूचीबद्ध करें, और उस सूची को पीडीएफ कॉपी पर रूपरेखा के रूप में सेट करें। बुकमार्क्स स्वयं एक विशेष सेट के साथ हैश मैप्स हैं। मुझे यकीन नहीं है कि सभी मूल्य क्या हैं, लेकिन उनमें "शीर्षक", "एक्शन" शामिल है (ऐसा लगता है कि आप कहां निर्दिष्ट करेंगे कि यह एक नामित गंतव्य है, हालांकि मुझे नहीं पता कि यह मूल्य क्या होगा), और "यूआरआई" (जिसका उपयोग किया जाता है यदि यह एक बाहरी लिंक है - मुझे संदेह है कि यह उस नामित गंतव्य का नाम निर्दिष्ट करेगा जिसे आप लिंक कर रहे हैं)। फिर, विनिर्देशों को खोजने में मुश्किल होती है।

फिर पाठक के पृष्ठों पर पुन: सक्रिय करें, प्रत्येक पृष्ठ को पीडीएफकॉपी में आयात करें। this page आपकी मदद कर सकता है।

क्षमा करें मैं आपके लिए अधिक सहायक नहीं हूं। सौभाग्य।

पीएस यदि कोई और बेहतर उपकरण जानता है जो या तो (एल) जीपीएल या बीएसडी लाइसेंस प्राप्त है, तो मुझे इसके बारे में सुनना अच्छा लगेगा।

+0

धन्यवाद, जो मुझे आगे बढ़ने के लिए पर्याप्त देता है। –

5

अनुवर्ती: मैंने कुछ महीने पहले iText को एक पैच सबमिट किया था (अब इसे स्वीकार कर लिया गया है और HEAD का हिस्सा है) जो टेक्स्ट पार्सिंग क्षमताओं को iText में जोड़ता है। पीडीएफबॉक्स (नीचे उल्लिखित) में नए पीडीएफ पढ़ने के साथ समस्याएं हैं (पुराने?) पुराने xref तालिका प्रारूप के बजाय xref स्ट्रीम का उपयोग करें।


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

मैं यह भी उल्लेख करूंगा कि iText में पीडीएफ फ़ाइल को पार्स करने की क्षमता है, यह प्रत्येक पृष्ठ पर टेक्स्ट सामग्री को पार्स करने में बहुत अच्छा नहीं है। यदि आप पीडीएफ उच्च स्तर की संरचनाओं (शब्दकोश, आदि ...) तक पहुंचने के लिए देख रहे हैं जिनका उपयोग बुकमार्क, आदि संग्रहीत करने के लिए किया जाता है ... और आपको पीडीएफ स्पेक पढ़ने के साथ अपने हाथों को थोड़ा गंदा नहीं लग रहा है, तो आप कर सकते हैं पूरी तरह से करें जो आप पूछ रहे हैं (हम इसे थोड़ा सा करते हैं)।

PDF Spec बड़ा है, लेकिन अधिकांश भाग के लिए पठनीय है, और आप इसे के थोक (जो वास्तविक पृष्ठ सामग्री और प्रतिपादन की दिशा में सक्षम है) अगर तुम सब करने की कोशिश कर रहे हैं निकालने बुकमार्क है के बारे में चिंता करने की जरूरत नहीं ।