2012-04-25 13 views
5

के लिए संयुक्ताक्षर तय करने के लिए कैसे हम एक प्रणाली है कि पीडीएफ फाइलों को पार्स करता है और अनुक्रमण और इस तरह के लिए अंदर का पाठ बाहर खींचती है। एक समस्या यह है कि हम यह कह रहे हैं कि इलस्ट्रेटर उन शब्दों को सेट करता है जिनमें फाई (सिंगल ग्लाइफ) के लिए लिगरेचर का उपयोग करने के लिए "फाई" होता है।"FI" जावा (और अन्य) में

उदाहरण इस लाइन के लिए

...

"बेंच और अमीर vitrified सिरेमिक टाइल।"

मेरी जावा डिबगर

में इस तरह दिखाता है "ete बेंच और अमीर vitri \ u001Fed सिरेमिक टाइल।"

ऐसा लगता है कि \ u001F चरित्र कोड एडोब पीडीएफ फाइलों संयुक्ताक्षर "फाई" के लिए इस्तेमाल करते हैं। मैं स्पष्ट रूप से "फाई" के लिए \ u001F के अवसरों को स्वैप कर सकता था, लेकिन क्या किसी को इसे संभालने और इस तरह के मामलों को संभालने का एक मजबूत तरीका पता है?

+0

ick। वे यूनिकोड नियंत्रण वर्णों का उपयोग कर रहे हैं? !!! –

+0

वहाँ कई संयुक्ताक्षर नहीं हैं: (। कम से कम अंग्रेजी में) एफएफ, FL, FFL, इंटरनेट, ffi कर रहे हैं मुख्य लोगों –

+0

एडोब कई वर्ण सेट एन्कोडिंग है। तो यह पीडीएफ पुस्तकालय पर निर्भर करता है; उदाहरण के लिए लिखने पर एक फ़ॉन्ट और सीपी 1252 या एन्कोडिंग जैसे एन्कोडिंग का चयन करता है। आपके मामले में शायद एकमात्र वर्तमान समाधान यहां पाया जा सकता है http://superuser.com/questions/220363/cleaning-up-pdftotext-font-issues –

उत्तर

4

पीडीएफ (टीजे, टीजे, इत्यादि) में 'शो टेक्स्ट' ऑपरेटरों के लिए ऑपरेंड के रूप में उपयोग किए जाने वाले बाइट्स का क्रम ग्राफिक राज्य में सक्रिय फ़ॉन्ट के एन्कोडिंग और फ़ॉन्ट से जुड़े ToUnicode cmap का उपयोग करके पाठ में परिवर्तित किया जाना चाहिए । कुछ फोंट में एक ToUnicode cmap शामिल है जो 0x001F कोड (या जो भी कोड ग्लाइफ के लिए उपयोग किया जाता है) को 'f' और 'l' वर्णित करता है। अन्य फ़ॉन्ट्स एन्कोडिंग का उपयोग एक/भिन्नता सरणी के साथ करते हैं जो कोड 0x1F को अक्षर/fl पर नक्शा करता है। सही परिणाम प्राप्त करने के लिए इन संरचनाओं को संसाधित किया जाना चाहिए।