programing

ePub 형식을 읽는 중

powerit 2023. 7. 7. 21:10
반응형

ePub 형식을 읽는 중

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

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

  • 책의 내용이 어떻게 보여야 하는지 말하는 사람 (XHTML 1.1의 하위 집합 + CSS)
  • 컨텐츠를 구성하는 모든 파일(XML 파일인 OPF)을 나열하는 "매니페스트"를 정의합니다.
  • 하나는 모든 것이 어떻게 포장되는지 정의합니다(OEBPS: 매니페스트에 있는 모든 것의 zip 파일과 몇 개의 추가 파일).

사양은 다소 까다로워 보이지만, 실제로 기본(XML 압축 풀기, 구문 분석)을 완료한 후에는 특별히 어렵거나 복잡하지 않습니다.

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

이제 막 시작하는 경우 몇 가지 조언:

내용을 표시하려면 다음을 사용합니다.UIWebView현재로는.

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

를 사용하여 보기 생성UIWebView

EPUB 파일 다운로드

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

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

이 XML에서 media-type이 있는 첫 번째 "루트 파일"을 찾습니다.application/oebps-package+xml이것은 책의 OPF 파일입니다.

OPF 파일 구문 분석(XML도 포함)

이제 당신은 그 책의 첫 장이 무엇인지 알아야 합니다.

각각의<item>에서<manifest>요소에 ID와 href가 있습니다.이것들을 저장합니다.NSDictionary여기서 key는 id이고 object는 href입니다.

첫번째를 보세요.<itemref>에서<spine>(a)의 ID 중 하나에 해당하는 idref 속성을 가지고 있습니다.그 아이디를 찾아보세요.NSDictionary그리고 당신은 href를 얻을 것입니다.

이것은 사용자에게 보여줄 첫 번째 장의 파일입니다.전체 경로가 무엇인지 확인합니다(힌트: zip 파일의 압축을 푼 곳은 (3)과 (6)의 OPF 파일의 기본 디렉터리입니다).

를 작성합니다.NSURL사용.fileURLWithPath:여기서 경로는 (7c)로부터의 전체 경로입니다.다음을 사용하여 이 요청 로드UIWebView사용자가 (1)에서 작성했습니다.

사용자가 한 장에서 다른 장으로 이동할 수 있도록 앞으로/뒤로 버튼이나 스위프 등을 구현해야 합니다.을 합니다.<spine>어떤 것인지 - 다에어파보여것인결정다합니지줄일떤음을▁to▁the▁to다▁work▁out.<itemrefs>XML은 판독기에 표시되는 순서대로 표시됩니다.

EPUB는 "그냥" XML 형식이므로 xml 파서와 사양이 있으면 괜찮을 것입니다.

그리고 약간의 투토?재미있게 보내!

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

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


편집 3: 질문을 편집할 때 주석을 추가해야 답변하는 사람들이 토론을 계속할 수 있습니다(주석을 달지 않으면 편집 내용을 알 수 없습니다).

스택 오버플로에 대한 사양 또는 관련 질문을 읽지 않았기 때문에 구문 분석이 실패합니다.*.epub 파일은 일반 xml이 아닌 XML 파일을 포함하는 압축된 폴더입니다.

저는 이 튜토리얼을 한 번 읽었고(무료 등록이 필요합니다, 죄송합니다), ePub.developerWorks 튜토리얼을 여기서 잘 소개해 주었습니다.

XML 처리 라이브러리 중 일부를 살펴보시기를 강력히 권장합니다.XML 파일에서 특정 정보만 가져오려면 올바른 구문 분석 전략을 선택할 수 있습니다.

오픈 소스 프로젝트 fbreader가 있습니다.

아이폰도 지원합니다.

http://www.fbreader.org/about.php

저는 아이폰 앱을 위한 epub-framework를 만들기 위해 놀고 있습니다.

현재(나는 정말로 막 시작했다) 챕터에 대한 링크가 있는 제목 페이지를 생성할 수 있습니다.

나의 접근법은

  • 기본적으로 자바스크립트 앱을 아이폰 앱으로 허용하는 계층으로 퀵커넥트 아이폰 프레임워크 사용(아마 폰갭으로 변경)
  • UNZIPed epub를 프로젝트에 리소스로 추가합니다.
  • epub.js의 사용자 정의 버전으로 전체를 구문 분석합니다(구글 코드의 어딘가).

현재 페이지 플립, 일종의 GUI 및 사소한 사용성 문제(보고 있는 현재 페이지 저장)를 조사하고 있습니다.

그게 당신에게 어떻게 시작할 것인지에 대한 아이디어를 주기를 바랍니다.

Jonathan Wight(schwa)는 iPhone에서 ePub 문서를 구문 분석하고 표시하기 위한 ObjC 솔루션을 개발했습니다.그것은 그의 터치코드 오픈소스 저장소의 일부입니다.

언급URL : https://stackoverflow.com/questions/1388467/reading-epub-format

반응형