ePub 형식 읽기


102

ePub 파일을 읽을 수있는 iPhone 애플리케이션을 개발하려고합니다. 이를 개발하는 데 사용할 수있는 프레임 워크가 있습니까? 이 파일 형식을 읽는 방법에 대해 전혀 모릅니다. NSXML 파서를 사용하여 확장명이 .epub 인 샘플 파일을 구문 분석하려고했지만 실패했습니다.

답변:


304

EPUB 형식은 다양한 사양 / 형식을 함께 제공합니다.

  • 책의 내용이 어떤 모습이어야하는지 말하는 사람 (XHTML 1.1 + CSS의 하위 집합)
  • 콘텐츠를 구성하는 모든 파일을 나열하는 "매니페스트"를 정의하는 하나 (OPF, XML 파일)
  • 하나는 모든 것이 패키징되는 방식을 정의하는 것입니다 (OEBPS : 매니페스트의 모든 항목에 대한 zip 파일과 몇 가지 추가 파일).

사양은 다소 어렵게 보이지만 실제로 기본 (압축 풀기, XML 구문 분석)을 갖추면 특별히 어렵거나 복잡하지 않습니다.

EPUB를 다운로드하고 어딘가에 압축을 풀고 매니페스트를 구문 분석 한 다음 관련 콘텐츠를 표시하는 방법을 알아 내야합니다.

막 시작하는 경우 몇 가지 지침 :

콘텐츠를 표시하려면 지금은 a UIWebView를 사용하십시오 .

다음은 코드에 대한 높은 수준의 단계입니다.

1) a로보기 만들기 UIWebView

2) EPUB 파일 다운로드

3) 위에 링크 된 zip 라이브러리를 사용하여 앱 문서 폴더의 하위 디렉토리에 압축을 풉니 다.

4) META-INF/container.xml위에 링크 된 TBXML을 사용하여 XML 파일을 구문 분석합니다 (이 파일이 존재하지 않는 경우 EPUB은 유효하지 않음).

5)이 XML에서 media-type 인 첫 번째 "rootfile"을 찾으십시오 application/oebps-package+xml. 책의 OPF 파일입니다.

6) OPF 파일 (XML) 구문 분석

7) 이제 책의 첫 번째 장이 무엇인지 알아야합니다.

a) 각 <item><manifest>요소는 ID 및 HREF있다. NSDictionary키가 ID이고 객체가 href 인 곳에 저장 하십시오.

b) 상기 제 봐 <itemref>에서 <spine>. (a)의 ID 중 하나에 해당하는 idref 속성이 있습니다. 에서 그 ID를 NSDictionary찾으면 href를 얻을 수 있습니다.

c) 사용자에게 보여줄 첫 번째 장의 파일입니다. 전체 경로가 무엇인지 알아 내십시오 (힌트 : (3)의 zip 파일과 (6)의 OPF 파일의 기본 디렉토리를 압축 해제 한 위치).

8) NSURLusing을 만듭니다. fileURLWithPath:여기서 경로는 (7c)의 전체 경로입니다. UIWebView(1)에서 만든를 사용하여이 요청을로드합니다 .

사용자가 한 챕터에서 다른 챕터로 이동할 수 있도록 앞으로 / 뒤로 버튼 또는 스 와이프 등을 구현해야합니다. <spine>다음에 표시 할 파일을 결정하려면를 사용하십시오. <itemrefs>XML에서는 독자에게 표시되어야하는 순서대로되어 있습니다.


정말 좋은 튜토리얼 ..! 쿨한 남자..! 나는 그러한 데모를 위해 많은 시간을 보냈다
Paresh Thakor

16
그것은이 답변 1 upvote에 제공 만 가능하는 수치이다
팀 맥나마라

좋은 대답입니다. 이것은 FAQ가되고 있습니다 :)
Nic Gibson

9
고마워요 Euan ... 아직 솔루션을 찾고있는 모든 분들을 위해, 샘플을 만들고 ideveloperworld.blogspot.com/2011/02/epub-reader.html에
MobX

ZIP 아카이브의 압축을 푼 별도의 새 파일을 만드는 것을 의미하는 경우 "어딘가에 압축 해제"할 필요가 없습니다. ZIP은 매우 간단한 형식이며, 이러한 라이브러리가 아직없는 경우 즉시 아카이브에서 직접 읽을 수있는 아카이브의 다양한 파일에 대한 입력 스트림을 제공하는 라이브러리를 만드는 것은 매우 쉽습니다. 전체 소스를 사용할 수있는 이러한 라이브러리의 한 예는 RubyZip ( rubyzip.sourceforge.net )입니다.
CJS

21

분명히 EPUB는 "그냥"XML 형식이므로 xml 파서와 사양 이 있으면 괜찮습니다.

게다가 조금 TUTO ? 즐기세요!

편집 : 당신은 또한 여기 에서 일부 코드를 읽을 수 있습니다 . 이것은 epub를 생성하기위한 것이지 읽지 않지만 코드가 유용 할 수 있습니다.

다시 편집하십시오 : 오른쪽 사이드 바에서 관련 질문에 대한 링크를 참조하십시오 .ePub를 지원하는 무료 전자 책 리더에 대한 답변에 몇 가지 링크가 있습니다.


수정 3 : 질문을 수정할 때 댓글을 추가하여 답변하는 사람들이 토론을 계속할 수 있도록해야합니다 (댓글이없는 경우 수정 내용을 알 수 없음).

따라서 Stack Overflow에서 사양 또는 관련 질문을 읽지 않았기 때문에 구문 분석이 실패했습니다. * .epub 파일은 일반 xml이 아닌 XML 파일을 포함하는 압축 폴더입니다.


6

이 튜토리얼을 한 번 읽었고 (무료 등록이 필요합니다. 죄송합니다) ePub에 대한 훌륭한 소개를 받았습니다. 여기 deverloperWorks 튜토리얼

XML 처리 라이브러리 중 일부를 살펴 보는 것이 좋습니다. XML 파일에서 특정 정보를 얻으려는 경우 올바른 구문 분석 전략을 선택할 수 있습니다.


이 튜토리얼은 훌륭하며 사용 가능한 많은 표준 오픈 소스 ePub 도구를 작성한 사람이 작성했습니다. 빠른 읽기이며 ePub 형식에 대한 완벽한 소개를 제공합니다.
Brian Moeskau


2

나는 아이폰 앱을위한 epub 프레임 워크를 만들기 위해 arround를하고있다.

지금은 (저는 그냥 시작합니다) 챕터에 대한 링크가있는 제목 페이지를 생성 할 수 있습니다.

내 접근 방식은

  • 퀵 커넥트 아이폰 프레임 워크를 레이어로 사용 (아마도 phonegap으로 변경)하여 기본적으로 아이폰 앱으로 자바 스크립트 앱을 허용합니다.
  • UNZIPed epub를 프로젝트에 리소스로 추가
  • epub.js의 사용자 정의 버전 (google-code의 어딘가에 있음)으로 모든 것을 파싱합니다.

지금은 페이지 플립, 일종의 GUI 및 사소한 사용성 문제를 조사하고 있습니다 (현재 페이지가 표시되는 것을 저장하십시오)

시작하는 방법에 대한 아이디어를 주셨으면합니다.


나는이 같은 오류를 가지고 무엇을 epub.js 사용한 XML 구문 분석 오류 : 어떤 요소가 발견되지 u는 몇 가지 링크를 제공하여 나에게 그러는 1.can 위치 라인 번호 1 열 번호를
user969275

프레임 워크는 어떻습니까? 어딘가에 출판 했습니까?
yasirmturk

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.