पढ़ना ePub प्रारूप


102

मैं ePub फ़ाइलों को पढ़ने के लिए एक iPhone एप्लिकेशन विकसित करने का प्रयास कर रहा हूं। क्या इसे विकसित करने के लिए कोई रूपरेखा उपलब्ध है? मुझे इस बारे में कोई जानकारी नहीं है कि इस फ़ाइल प्रारूप को कैसे पढ़ा जाए। मैंने NSXML पार्सर का उपयोग करके .epub एक्सटेंशन के साथ एक नमूना फ़ाइल पार्स करने की कोशिश की, लेकिन वह विफल हो गई।

जवाबों:


304

EPUB प्रारूप अलग-अलग विशिष्टताओं / स्वरूपों का एक गुच्छा लाता है:

  • यह कहने के लिए कि पुस्तक की सामग्री कैसी दिखनी चाहिए (XHTML 1.1 + CSS का एक उपसमूह)
  • एक "मैनिफ़ेस्ट" को परिभाषित करने के लिए जो उस सामग्री को बनाने वाली सभी फ़ाइलों को सूचीबद्ध करता है (ओपीएफ, जो एक एक्सएमएल फ़ाइल है)
  • यह परिभाषित करने के लिए कि सब कुछ कैसे पैक किया जाता है (OEBPS: घोषणापत्र में सब कुछ की एक ज़िप फ़ाइल और कुछ अतिरिक्त फाइलें)

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

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

कुछ संकेत अगर आप अभी शुरू कर रहे हैं:

सामग्री प्रदर्शित करने के UIWebViewलिए अभी के लिए उपयोग करें ।

यहाँ आपके कोड के लिए एक उच्च स्तरीय कदम है:

1) a के साथ एक दृश्य बनाएं UIWebView

2) EPUB फ़ाइल डाउनलोड करें

3) ऊपर लिंक किए गए, जिप लाइब्रेरी का उपयोग करके इसे अपने ऐप के दस्तावेज़ फ़ोल्डर में एक उपनिर्देशिका पर अनज़िप करें

4) META-INF/container.xmlऊपर से जुड़े टीबीएक्सएमएल का उपयोग करके (यदि यह फाइल ईपीयूबी अमान्य नहीं है तो XML फाइल को पार्स करें )

5) इस एक्सएमएल में, मीडिया-प्रकार के साथ पहला "रूटफाइल" ढूंढें application/oebps-package+xml। यह पुस्तक के लिए ओपीएफ फ़ाइल है।

6) OPF फ़ाइल (XML भी) पार्स करें

7) अब आपको यह जानना होगा कि पुस्तक का पहला अध्याय क्या है।

a) तत्व <item>में प्रत्येक में <manifest>एक id और एक href है। इनमें स्टोर करें NSDictionaryजहां कुंजी आईडी है और ऑब्जेक्ट href है।

ख) पहले को देखो <itemref>में <spine>। इसमें एक idref विशेषता होती है जो id (a) में से किसी एक से मेल खाती है। उस आईडी को देखें NSDictionaryऔर आपको एक href मिलेगा।

c) यह उपयोगकर्ता को दिखाने के लिए पहले अध्याय की फाइल है। काम पूरा रास्ता क्या है (संकेत: यह जहाँ भी आप ज़िप फ़ाइल को (3) प्लस ओपीएफ फ़ाइल की आधार निर्देशिका में (6)) खोल दिया है

8) एक NSURLप्रयोग का निर्माण करें fileURLWithPath:, जहाँ पथ (7c) से पूर्ण पथ है। UIWebViewआपके द्वारा बनाए गए (1) का उपयोग करके इस अनुरोध को लोड करें ।

आपको आगे / पिछड़े बटन या स्वाइप या कुछ और लागू करने की आवश्यकता होगी ताकि उपयोगकर्ता एक अध्याय से दूसरे अध्याय में जा सकें। <spine>आगे कौन सी फाइल दिखानी है , यह काम करने के लिए उपयोग करें - <itemrefs>एक्सएमएल में एक्सएमएल क्रम में हैं जो उन्हें पाठक को दिखाना चाहिए।


वास्तव में एक अच्छा ट्यूटोरियल ..! कूल यार..! मैंने ऐसे डेमो के लिए बहुत समय बिताया है
परेश ठाकोर

16
यह शर्म की बात है कि इस उत्तर के लिए केवल 1 अपवोट प्रदान करना संभव है
टिम मैकनामारा

बहुत बढ़िया जवाब। यह एक FAQ :)
निक गिब्सन

9
बहुत बहुत धन्यवाद Euan ... उन सभी के लिए जो अभी भी एक समाधान की तलाश कर रहे हैं, मैंने एक नमूना बनाया है और ideveloperworld.blogspot.com/2011/02/epub-reader.html
MobX

ध्यान दें कि कोई विशेष आवश्यकता नहीं है "इसे कहीं अनज़िप करने के लिए" यदि आप इसका मतलब है कि अलग-अलग नई फाइलें बना रहे हैं जो ज़िप संग्रह की अनपैक्ड सामग्री हैं। ज़िप एक बहुत ही सरल प्रारूप है, और यह पुस्तकालयों को बनाने के लिए काफी आसान होना चाहिए जो आपको संग्रह में विभिन्न फाइलों के लिए इनपुट स्ट्रीम प्रदान करते हैं जो सीधे मक्खी पर संग्रह से पढ़ते हैं, यदि आपके पास पहले से ऐसी लाइब्रेरी नहीं है। ऐसे पुस्तकालय का एक उदाहरण, पूर्ण स्रोत उपलब्ध होने के साथ, रूबीजिप ( rubyzip.sourceforge.net ) है।
cjs

21

जाहिरा तौर पर EPUB एक XML प्रारूप "सिर्फ" है, इसलिए यदि आपके पास एक xml पार्सर है और कल्पना यह ठीक होनी चाहिए।

प्लस थोड़ा टुटो ? मज़े करो!

EDIT: आप यहां कुछ कोड भी पढ़ सकते हैं , यह epub जनरेट करने के लिए है, इन्हें पढ़ना नहीं, लेकिन कोड उपयोगी हो सकता है।

EDIT फिर: और दाहिने साइडबार में संबंधित प्रश्न के लिंक देखें, ईबुक रीडर को मुक्त करने के लिए उत्तर में कुछ लिंक हैं जो ePub का समर्थन करते हैं।


संपादित 3: जब आप अपने प्रश्न को संपादित करते हैं, तो आपको एक टिप्पणी जोड़नी चाहिए ताकि जवाब देने वाले लोग चर्चा जारी रख सकें (यदि आप टिप्पणी नहीं करते हैं तो हम आपके संपादन पर ध्यान नहीं देते हैं)।

इसलिए, पार्सिंग विफल हो जाती है क्योंकि आपने स्टैक ओवरफ्लो पर युक्ति या संबंधित प्रश्नों को नहीं पढ़ा है ... * .epub फ़ाइल एक ज़िप्ड फ़ोल्डर है जिसमें XML फ़ाइल (s) हैं, न कि सादे xml।


6

मैंने एक बार इस ट्यूटोरियल के माध्यम से पढ़ा (मुफ्त पंजीकरण आवश्यक, क्षमा करें) और इसने मुझे ePub का शानदार परिचय दिया। यहाँ deverloperWorks ट्यूटोरियल

मैं अत्यधिक सुझाव देता हूं कि आप XML प्रसंस्करण पुस्तकालयों में से कुछ को देखें। यदि आप केवल XML फ़ाइल से विशिष्ट जानकारी प्राप्त करना चाहते हैं, तो आप सही पार्सिंग रणनीति चुन सकते हैं।


यह ट्यूटोरियल उत्कृष्ट है और उस व्यक्ति द्वारा लिखा गया है जिसने उपलब्ध कई मानक ओपन सोर्स ePub टूल्स को लिखा है। यह एक त्वरित रीड है और ePub फॉर्मेट में एक सही वर्किंग इंट्रो देता है।
ब्रायन मोसकाऊ


2

मैं iphone एप्स के लिए एक एपब-फ्रेमवर्क बनाने के लिए अराउंड खेल रहा हूं।

फिलहाल (मैं वास्तव में अभी शुरुआत कर रहा हूं) मैं अध्यायों के लिंक के साथ एक शीर्षक पृष्ठ उत्पन्न कर सकता हूं।

मेरा दृष्टिकोण है

  • एक परत के रूप में Quickconnect iPhone फ्रेमवर्क का उपयोग करें (हो सकता है कि मैं phonegap में बदलूं) जो मूल रूप से javascript एप्स को iphone एप्स के रूप में अनुमति देता है।
  • प्रोजेक्ट के लिए एक स्रोत के रूप में UNZIPed epub जोड़ें
  • पूरी चीज़ को epub.js के अनुकूलित संस्करण के साथ पार्स करें (कहीं-कहीं गूगल-कोड)

अभी मैं पेजफ्लिप, कुछ प्रकार के गुई और मामूली प्रयोज्य मुद्दों में देख रहा हूँ (वर्तमान पृष्ठ को सहेजा जा रहा है)

मुझे उम्मीद है कि आप कैसे शुरू करने के बारे में एक विचार दे


मैंने epub.js का उपयोग किया है जो मुझे XML पार्सिंग त्रुटि के रूप में एक त्रुटि मिली : कोई तत्व नहीं मिला स्थान रेखा नंबर 1 कॉलम नंबर 1.can u hel मुझे कुछ लिंक प्रदान करके
user969275

अपने ढांचे के साथ क्या हो रहा है? क्या आपने इसे कहीं प्रकाशित किया है?
यासमिरतुर

1

जोनाथन वाइट (schwa) ने iPhone पर ईपब दस्तावेजों को पार्स करने और प्रदर्शित करने के लिए एक ओबजेक समाधान विकसित किया है। यह उनके टचकोड ओपन सोर्स रिपॉजिटरी का हिस्सा है।


कृपया मुझे टचकोड ओपन सोर्स का लिंक दें
हिरेन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.