IOS에서 ePub 리더를 만들고 있습니다. 기본적으로, 나는 uhwebview를 사용하여 xhtml 파일을로드합니다. 페이지가 바뀔 때마다 uiwebview로 파일을로드 한 다음 javascript를 호출하여 오른쪽 오프셋으로 스크롤해야합니다. 여기에 문제가 있습니다. 일부 xhtml 파일은 크기가 커서 (> 2MB와 같이)로드하는 데 시간이 너무 많이 걸립니다. 따라서 페이지 넘기기 애니메이션이 너무 부드럽지 않습니다. 그래서 나는 uiwebviewA로 xhtml을 한 번로드 할 수 있고 페이지가 바뀔 때마다 또 다른 uiwebviewB를 만들고 uiwebviewA에서 필요한 HTML 컨텐트 (두 번째 페이지와 같은)를 가져올 수 있다고 생각합니다. 이런 방식으로 html을 작은 크기로 제한 할 수 있으며 페이지 넘기기 애니메이션이 원활해야합니다. 내 질문은 거기에 어떤 오픈 소스 자바 스크립트 라이브러리 작업을 할 수 있습니까? 의견을 보내 주시면 감사하겠습니다.자바 스크립트 분할 HTML 콘텐츠
답변
설명하는 것처럼 HTML 문서를 분리하는 의미 있고 명확한 방법은 없습니다. 매우 다른 두 가지 사항을 혼동하고 있습니다. (1) 렌더링을 페이지 크기의 청크로 분할하고, (2) HTML 소스를 분할하는 것. 다른 방식으로 표현하자면, 렌더링 된 부분의 순차적 구성이 원본 HTML 파일의 렌더링과 동일하도록 HTML 파일을 여러 조각으로 나눌 수 있다고 상상할 수있는 알고리즘이 없습니다. 즉, HTML을 분할하는 방법을 파악하기 위해 페이지를 렌더링하는 것과 관련된 많은 작업 또는 모든 작업을 전체적으로 수행해야하는 경우가 있습니다.
HTML을 분할한다는 개념을 포기해야합니다. 전자 책 리더는 본질적으로 전체 HTML 문서를 한 번 렌더링 한 다음 CSS 영역을 사용하여 "윈도우 잉"및 "클리핑"및 "오프셋"또는 경우에 따라 CSS 섹션을 사용하여 페이지 매기기를 수행합니다.
나는 당신이하려고하는 것을 이해한다면, 내가 생각할 수있는 몇 가지 대안이 있습니다.
- 는 이전 워크 플로우를 미리 분할하여 입력 HTML 파일의 크기를 줄입니다. 예를 들어, 내가 아는 한 프로젝트에서 소스 (X) HTML 파일에는 프리 프로세서에 원하는 경우 개별 파일로 분할하는 추가 마크 업 비트가 있습니다.이 경우 원할 경우 전자 북 판독기에 대한 해결 방법입니다 CSS
page-break-*
속성을 올바르게 준수하십시오. 그래픽으로 다음 페이지의 렌더링을 미리 계산하고 페이지 넘기기를 위해 이것을 사용하십시오.
이미 설명했듯이 책의 모든 페이지에 대해 전체 HTML 문서를 다시로드하는 아키텍처를 다시 생각해보십시오. 단지 페이지 전환 효과 인 경우 이이를 수행하기를 원한다면 그들을 포기하십시오.
- 많은 전자 책 독자 페이지 매김을 필요로하지 을하는 스크롤 모드를 제공하는 것을 고려, 일부는 (예를 들어 히마와리 리더) 실제로 몇몇 독자가 선호하는 무언가이다 만 스크롤 모드를 제공합니다. 스크롤링 버전을 배치 한 다음 버전 2에서 페이지 매김을 수행 할 수 있습니다.
그리고 당신이 무엇을 요구 정확하게 수행이 데모 :
솔루션을 제공해 주셔서 감사합니다. 이것들은 나에게 매우 도움이된다 !! – user418751
스크롤링 모드를 제공하는 오픈 소스 리더를 아십니까? 그것은 저에게 도움이 될 것이고 저의 시간을 절약 할 것입니다. 미리 감사드립니다! – user418751
당신은 정말이 문제를 확인해야합니다
http://cubiq.org/dropbox/SwipeView/demo/ereader/
그것은 텍스트 (책을) 소요 및 화면 크기에 맞게 텍스트를 페이지 매김합니다.
Android 및 iOS에서 데모를 테스트 한 결과 훌륭했습니다!
jQuery Mobile은 여러 페이지가 정의 된 하나의 HTML 파일을 사용하므로 다음과 같이 시도해보십시오. [JQM] (http://jquerymobile.com/) –
"페이지 란 무엇인가"It 한 페이지에 맞는 것을 발견하기가 어렵습니다. 다른 글꼴, 크기, 이미지, 레이아웃, 간격, 내용 등 – epascarello
열에 html 콘텐츠의 형식을 지정하기 위해 -webkit-columns를 사용하므로 페이지가 열을 의미합니다. – user418751