2010-11-04 3 views
23

पर पीडीएफ खोज क्वार्ट्ज का उपयोग करके पीडीएफ से एनोटेशन पढ़ने की कोशिश करने के दो दिन बाद, मैंने इसे और posted my code करने में कामयाब रहा है।आईफोन

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

मैं क्या करने की कोशिश की:

मैं TJ और Tj ऑपरेटरों से निपटने CGPDFScannerScan उपयोग करने की कोशिश - जबकि अन्य दस्तावेजों पर यह ज्यादातर अनियमित अक्षर रिटर्न कुछ PDF पर सही पाठ देता है,। शायद यह टेक्स्ट एन्कोडिंग से संबंधित है? कोई pointed out कि पाठ ब्लॉक (बीटी/ईटी ऑपरेटरों द्वारा चिह्नित) को इसके बजाय संभाला जाना चाहिए, लेकिन मैं अभी भी ऐसा करने में कामयाब नहीं रहा हूं। कोई भी किसी भी पीडीएफ से पाठ निकालने में कामयाब रहा?

उसके बाद, NSMutableString में सभी पाठों को संग्रहीत करके और rangeOfString (यदि कोई बेहतर तरीका है तो कृपया मुझे बताएं) का उपयोग करके खोज करना आसान होना चाहिए।

लेकिन फिर परिणाम पर हाइलाइट करें? मुझे पता है कि ग्लिफ आकार खोजने के लिए कुछ ऑपरेटर हैं, इसलिए मैं उन मानों के आधार पर परिणामस्वरूप आयत की गणना कर सकता हूं, लेकिन मैं घंटों के लिए spec पढ़ रहा हूं ... यह एक bloated गड़बड़ है और मैं पागल हो रहा हूँ। व्यावहारिक स्पष्टीकरण वाला कोई भी व्यक्ति?

अद्यतन

उपयोगकर्ता नवीन Thunga PDFKitten, "आईओएस में पीडीएफ़ से डेटा निकालने के लिए एक रूपरेखा" पाया। मैंने अभी डेमो की कोशिश की और ऐसा लगता है कि विज्ञापन के रूप में काम करता है। मैं इसे और पीडीएफ के साथ परीक्षण करूंगा और जल्द ही परिणाम पोस्ट करूंगा। एक साइड नोट के रूप में, कोड मेरे लिए बहुत अच्छा लगता है - यदि आप रुचि रखते हैं कि यह सामान कैसे काम करता है तो यह बहुत बढ़िया है।

+0

मिले ऑपरेटरों के इस संग्रह उपयोगी हो सकता है: http://efreedom.com/Question/1-3627745/Getting-Text-Position-Parsing-Pdf-Quartz -2 डी –

+0

हे ब्रेनफेडर, आपको खोज परिणाम को हाइलाइट करने से संबंधित कोई समाधान मिला? – Sarah

+0

@ सराह: नहीं, अभी भी कुछ भी नहीं, मैंने कुछ दिनों के बाद अन्य सामानों पर ध्यान केंद्रित करना शुरू किया ... – pt2ph8

उत्तर

4

यह लागू करने के लिए एक साधारण समस्या नहीं है, लेकिन यह सीधा है।

किसी दिए गए पृष्ठ के लिए आपको CGPDF स्कैनर API का उपयोग करके पृष्ठ को स्कैन करने की आवश्यकता है। आपको पीडीएफ ऑपरेटर के लिए कॉलबैक पंजीकृत करने की आवश्यकता है जो पेज में टेक्स्ट को प्रभावित करते हैं - न केवल टीजे/टीजे, बल्कि फ़ॉन्ट सेट करने वाले, टेक्स्ट ड्राइंग मैट्रिक्स इत्यादि को भी प्रभावित करते हैं। आपको एक राज्य मशीन बनाने की आवश्यकता है जो प्रत्येक फेस टैग के साथ अपडेट करता है + मापदंडों। वर्तमान फ़ॉन्ट के एन्कोडिंग के लिए आपको टेक्स्ट एकाउंटिंग की जांच करनी होगी। जब आपको वह टेक्स्ट मिलता है जिसे आप हाइलाइट करना चाहते हैं, तो आपको वर्तमान टेक्स्ट ड्राइंग मैट्रिक्स की जांच करनी होगी जिसे आप ड्राइंग निर्देशांक निर्धारित करने के लिए अपडेट कर रहे हैं। पीडीएफ विनिर्देश पढ़ें (संस्करण 1.7 एडोब से डाउनलोड करने योग्य है) यह समझने के लिए कि किन ऑपरेटरों को आपको ध्यान देना होगा।

फ़ॉन्ट एन्कोडिंग शायद सबसे कठिन हिस्सा है क्योंकि कुछ तरीकों से एन्कोडिंग निर्दिष्ट की जा सकती है, और उनमें से कुछ फ़ॉन्ट के लिए स्वामित्व हैं। अधिकांशतः आप एएनएसआई एन्कोडिंग के सबसेट पर धोखा दे सकते हैं और गिर सकते हैं - लेकिन यह अजीब फोंट वाले कुछ पीडीएफ पर टूट जाएगा।

अनिवार्य रूप से आप पृष्ठ को संसाधित कर रहे हैं जैसे कि आप इसे प्रस्तुत करना चाहते थे।

2

मैं PDF.js

कौन सा प्रदर्शन और साथ ही खोज पीडीएफ फाइल की अनुमति देगा का उपयोग कर उद्देश्य-सी में utility class बनाया।

उपयोगिता वर्ग Highlight all search result और 'केस संवेदनशील' विकल्प का उपयोग करके खोज की अनुमति देता है।

कार्रवाई में पीडीएफ खोज देखो है Link