HTML livre de la pagination
Comment puis-je diviser le contenu d'un fichier HTML dans l'écran de la taille des morceaux de "paginer" dans un navigateur WebKit?
Chaque "page" devrait montrer un montant de texte. Cela signifie qu'une ligne de texte ne doit pas être coupé en deux dans le bord supérieur ou inférieur de l'écran.
Modifier
Cette question a été à l'origine étiqueté "Android" comme mon intention est de construire un Android ePub reader. Cependant, il semble que la solution peut être implémenté avec le JavaScript et le CSS, j'ai donc élargi la portée de la question pour le rendre indépendant de la plateforme.
- "Comment puis-je diviser le contenu du fichier XHTML dans l'écran de la taille des morceaux de "paginer" le livre". -- Pourquoi cela?
- Parce que c'est un livre et largement utilisé façon (c'est à dire: Aldiko) afin de présenter le texte, et aussi que c'est un problème intéressant. 🙂
- Salut , dont l'un des ci-dessous des solutions travaillé pour vous.Maintenant, je suis face à un même problème que vous:(
- frère...u ont été en mesure d'obtenir la solution..j'ai désespérément besoin d'elle ...s'il vous plaît
- de même pour EPUB: stackoverflow.com/questions/2808652/...
Vous devez vous connecter pour publier un commentaire.
Bâtiment sur Dan réponse, voici ma solution pour ce problème, avec qui j'ai eu du mal moi-même jusqu'à tout à l'heure. (ce JS fonctionne sur iOS Webkit, pas de garanties pour android, mais s'il vous plaît laissez-moi savoir les résultats)
Espère que cela aide...
Parlant d'expérience, attendez-vous à mis beaucoup de temps à cela, même pour un barebones spectateur. EPub reader a été le premier grand projet que j'ai pris lorsque j'ai commencé à apprendre le C#, mais le standard ePub est certainement assez complexe.
Vous pouvez trouver la dernière version de la spécification ePub ici:
http://www.idpf.org/specs.htm
qui comprend l'OPS (Open Publication Structure), OPF (Open Format d'Emballage), et de l'OCF (OEBPS Format de Conteneur).
Aussi, si ça vous aide à tous, voici un lien vers le code source C# du projet que j'ai commencé sur:
https://www.dropbox.com/sh/50kxcr29831t854/MDITIklW3I/ePub%20Test.zip
Ce n'est pas étoffé à tous; je n'ai pas joué avec pendant des mois, mais si je me souviens bien, il suffit de coller un fichier ePub dans le répertoire de débogage, et lorsque vous exécutez le programme d'suffit de taper une partie du nom (par exemple, Sous la Coupole, il suffit de taper "dôme") et il affiche les détails du livre.
Je l'ai eu à travailler correctement pour quelques livres, mais tous les eBooks de Google recherche de Livres a cassé complètement. Ils ont un tout bizarre de mise en œuvre de ePub (pour moi, au moins) par rapport à des livres provenant d'autres sources.
De toute façon, j'espère que certains des éléments de la structure de code dans il pourrait vous aider!
J'ai eu à coder quelque chose comme ça aussi, et mon (travail) et de la solution est: est-ce
Vous devez appliquer ces lignes à la webview...
Aussi, vous avez à injecter un peu de javascript. J'ai eu des tonnes de problèmes avec les différentes échelles de mon activité et le contenu affiché dans la webview, donc ma solution n'est pas de prendre de la valeur "de l'extérieur".
[...]
Profiter 🙂
currentPage
variable qui est à l'intérieur de la js chaîne?Récemment, j'ai tenté quelque chose de similaire à cela, et ajouté un peu de style CSS pour modifier la mise en page à l'horizontale au lieu de verticale. Cela m'a donné l'effet désiré sans avoir à modifier le contenu de l'Epub en aucune façon.
Ce code devrait travail.
Donc, fondamentalement, vous êtes l'injection de JavaScript pour modifier le style de l'élément de corps après le chapitre a été chargé (très important). Le seul inconvénient de cette approche est lorsque vous avez des images dans le contenu de la colonne calculée comte va de travers. Il ne devrait pas être trop difficile à résoudre si. Ma tentative allait injecter un peu de JavaScript pour ajouter des attributs width et height à toutes les images dans les DOM qui n'en ont pas.
Espère que cela aide.
-Dan
Il serait peut-travail pour les utiliser XSL-FO. Cela me semble lourd pour un appareil mobile, et peut-être que c'est exagéré, mais il doit travailler, et vous n'auriez pas à mettre en œuvre les complexités de la bonne pagination (par exemple, comment vous assurez-vous que chaque écran n'a pas de couper du texte dans la moitié) de vous-même.
L'idée de base serait:
Je ne sais pas si il y a une feuille de style XSL-FO processeur disponible pour Android. Vous pouvez essayer de Apache FOP. RenderX (XSL-FO processeur) a l'avantage d'avoir un paginé-HTML option de sortie, mais encore une fois je ne sais pas si cela peut fonctionner sur Android.
Il y a plusieurs façons de le faire. Si chaque ligne est dans son propre élément tout ce que vous avez à faire est de vérifier si l'un de ses bords se passe à l'extérieur de la vision (les navigateurs, ou le "livre de la page").
Si vous voulez savoir combien de "pages", il va être en avance, juste temporaire déplacer dans la vue et d'obtenir ce que la ligne une page se termine. Cela pourrait être lent à cause de la page de redistribution est nécessaire pour le navigateur de savoir où tout est.
Sinon je pense que vous pourriez utiliser l'élément HTML5 canvas à mesure du texte et /ou de dessiner du texte.
Quelques infos à ce sujet ici:
https://developer.mozilla.org/en/Drawing_text_using_a_canvas
http://uupaa-js-spinoff.googlecode.com/svn/trunk/uupaa-excanvas.js/demo/8_2_canvas_measureText.html
Eu ce même problème récemment et inspiré par les réponses trouvèrent une plaine CSS solution à l'aide de CSS3 sur colonne de* attributs:
L'exemple ci-dessus donne d'excellents résultats sur le retina de l'iPhone. En jouant avec les différents attributs des rendements des différents espacement entre les pages et de ces.
Si vous avez besoin de l'appui de plusieurs chapitres par exemple, qui ont besoin pour démarrer sur de nouvelles pages, il y a un XCode 5 exemple sur github: https://github.com/dmrschmidt/ios_uiwebview_pagination
J'ai été en mesure d'améliorer Nacho solution pour obtenir un glissement horizontal de pagination effet avec WebView. Vous pouvez trouver de solution ici et l'exemple code.
Edit:
Solution code.
MainActivity.java
Dans mon WebChromeClient de onJsAlert obtenir le nombre de pages horizontales qui je passe à la coutume HorizontalWebView pour mettre en œuvre la pagination effet
HorizontalWebView.java
Vous pourrait diviser les pages séparées XHTML fichiers et de les stocker dans un dossier. Par exemple: page01, page02. Vous pouvez ensuite rendre ces pages une par une dessous les uns des autres.
Vous pouvez regarder http://www.litres.ru/static/OR/or.html?data=/static/trials/00/42/47/00424722.gur.html&art=424722&user=0&trial=1 mais le code peut être fortement obscurci, donc il suffit d'utiliser Firebug pour inspecter les DOM.
Si le lien ne fonctionne pas, comment - vous donnerait fixe.