2010-11-17 26 views
8

Tôi đang lấy dữ liệu văn bản từ tệp XML và muốn hiển thị ở định dạng giống trang sách bên trong một UIWebView trên iPad. Các tệp XML sắp ra khỏi .epub và mỗi tệp có chứa một chương duy nhất của một cuốn sách, chỉ được phân chia bằng thẻ p.Phân trang theo kiểu Ereader

Tôi muốn phân trang động các tệp này thành các trang giống như sách dựa trên kích thước của UIWebView, là màn hình iPad đầy đủ, cũng như kích thước phông chữ do người dùng chọn. Tôi hiện đang tải một trang html trống với css liên quan vào một đoạn mã UIWebView, lấy các đoạn dựa trên số ký tự như các chuỗi từ XML và in chúng vào html bằng cách sử dụng StringByEvaluatingJavaScriptFromString và thuộc tính innerHTML.

Rõ ràng, thực hiện việc này bằng số ký tự tạo ra các trang được định dạng không đúng cách, được định dạng kỳ lạ, nhưng tôi không biết cách khác để "phân trang" văn bản.

Điều tôi đang tìm kiếm là điều gì đó giống với ứng dụng "eReader" trên iPad: http://www.ereader.com/. Dường như họ đang chia nhỏ một tệp duy nhất thành các trang động và tải tệp đó vào UIWebView s. Làm thế nào được thực hiện?

Trả lời

2

Hầu hết trình đọc EPUB dựa trên UIWebView chỉ cần sử dụng Cột CSS3 để phân trang tài liệu.

Bạn có thể thấy điều này trong hành động ở http://www.quirksmode.org/css/multicolumn.html

Ý tưởng cơ bản là bạn columnize 'tài liệu và sau đó di chuyển theo chiều ngang qua nó để hiển thị một trang cụ thể.

Sau khi thực hiện việc này cho một ứng dụng đọc sách điện tử phổ biến (Canada) trên iPhone và iPad, tôi có thể cho bạn biết rằng kỹ thuật này hoạt động nhưng nó rất lý tưởng.

+0

Điều này rất thú vị và chắc chắn hữu ích. Sau đó, các câu hỏi tiếp theo là: nếu CSS "cột" toàn bộ chương, có cách nào để truy cập và chỉnh sửa nội dung cột qua DOM, để tự động thay đổi số trang, v.v ... không? Ngoài ra, làm cách nào để bạn hạn chế người dùng tự do cuộn theo chiều ngang qua chế độ xem, để chúng bị "khóa" khi xem một trang tại một thời điểm? – Chris

+0

Ngoài ra, các cột CSS3 dường như hoạt động lạ khi bạn muốn có chiều rộng cột lớn hơn (nói về kích thước của cửa sổ iPad). Giải pháp của bạn là gì? Đã tạo một câu hỏi riêng ở đây: http: //stackoverflow.com/questions/4217936/css3-columns-and-uiwebview – Chris

+0

đó là một cách tiếp cận thực sự thú vị. Bạn có thể xử lý các cột dựng sẵn của EPUB bằng cách sử dụng phương pháp đó hay sau đó sẽ phá vỡ thủ thuật 'pagination'? –

1

Mã đã được tạo. Nó được gọi là epubjs. Nó chỉ là trình đọc epub của Javascript.

+0

Điều này khá rõ ràng. Tôi đã kiểm tra svn và nhận nó chạy với một vài .epubs khác nhau. Vấn đề là, khi tôi nhận được các tập tin vào Xcode và có UIWebView tải index.html toàn bộ điều sụp đổ. chỉ nội dung thẻ thông tin hiển thị và không có kiểu dáng. – Chris

+0

Một tùy chọn khác là sử dụng các chức năng cuộn mượt mà trong Motools, Jquery, v.v. Hiển thị trang web của bạn trong nhiều cột, sau đó duyệt đến thẻ băm. Có một bản demo hay trong trang web Jquery để cuộn đến bất kỳ nội dung nào trên trang web. –

0

Sử dụng UITextView với PageviewController. (ghi rõ nghi ngờ của bạn trong đó, nếu có)

Các vấn đề liên quan