2011-09-28 12 views
6

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

उत्तर

2

org.apache.pdfbox.examples.util.PrintTextLocations पर एक नज़र डालें। मैंने इसे काफी हद तक उपयोग किया है और पीडीएफ दस्तावेज़ों में तत्वों और बाध्यकारी बक्से के लेआउट पर विश्लेषण करना बहुत उपयोगी है। इसने सफेद स्याही में मुद्रित वस्तुओं, या प्रिंट करने योग्य क्षेत्र के बाहर (संभावित रूप से दस्तावेज़ वॉटरमार्क, या "भूल गए" आइटम लेखक द्वारा दृष्टि से धक्का दिया) का खुलासा किया।

प्रयोग उदाहरण:

java -cp app/target/pdfbox-app-1.5.0.jar org.apache.pdfbox.examples.util.PrintTextLocations ~/tmp/mydoc.pdf >~/tmp/out-text-locations.txt 

आप ऐसा ही कुछ मिल जाएगा:

Processing page: 0 
String[53.9,59.856995 fs=-6.0 xscale=6.0 height=-3.666 space=1.3320001 width=4.6679993]A 
String[58.568,59.856995 fs=-6.0 xscale=6.0 height=-3.666 space=1.3320001 width=2.6640015]f 
String[61.232002,59.856995 fs=-6.0 xscale=6.0 height=-3.666 space=1.3320001 width=1.6679993]e 
... 

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

अपने प्रश्न के दूसरे भाग के लिए, मैं अच्छे परिणाम xpdf संस्करण 3.02 का उपयोग कर किया था, Xref.cc फिक्सिंग के बाद (बनाने XRef::okToPrint(), XRef::okToChange(), XRef::okToCopy() और XRef::okToAddNotes() सब लौट gTrue)। यह लॉक किए गए दस्तावेज़ों को संभालने के लिए है, एन्क्रिप्टेड नहीं हैं (इसके लिए वहां अन्य यूटिलियां हैं)।

संबंधित मुद्दे