Pour une application ebook iPhone, je dois découper des documents HTML arbitrairement longs dans des pages qui correspondent exactement sur un écran. Si j'utilise simplement UIWebView pour cela, les lignes les plus basses ont tendance à ne s'afficher que partiellement: le reste disparaît du bord de la vue.Comment découper des documents HTML en pages pour ebook?
Je suppose donc que j'aurais besoin de savoir combien de lignes complètes (ou de caractères) seraient affichées par UIWebView, étant donné le code source HTML, puis de lui fournir exactement la bonne quantité de données. Cela implique probablement beaucoup de calculs, et l'utilisateur doit également être en mesure de changer les polices et les tailles.
Je ne sais pas si c'est même possible, bien que des applications comme Stanza prennent des fichiers HTML (epub) et les paginent bien. Il y a longtemps que j'ai regardé JavaScript, serait-ce une option qui vaut la peine d'être regardée?
Des suggestions très appréciées!
mise à jour
J'ai donc trouvé une solution, en utilisant JavaScript pour annoter les DOM-arbre avec des tailles et des positions de chaque élément. Il devrait alors être possible de restructurer l'arbre (en utilisant XSLT ou JavaScript), en le découpant dans des pages qui correspondent exactement à l'écran.
Le problème restant ici est que cela casse toujours la page sur les limites de paragraphe, puisqu'il n'y a pas d'accès au texte à un niveau inférieur à l'élément P. Peut-être y remédier en analysant le texte en mots, en encapsulant chaque mot dans une balise SPAN, en répétant la procédure de mesure ci-dessus, puis en affichant uniquement les éléments SPAN qui correspondent à l'écran, en insérant ceux restants au début du suivant page.
Tout cela semble plutôt compliqué. Est-ce que je parle n'importe quel sens? Y a-t-il un moyen plus simple?
Merci, suggestion utile! Dommage que WebKit n'implémente même pas la règle CSS2 @page. Le support multi-colonnes est apparemment encore expérimental, mais peut-être que je peux jouer un peu avec ça. Je ne sais pas si je peux avoir un UIWebView qui est assez large pour le nombre de colonnes que j'ai besoin de rendre (1 par page), mais cela mérite d'être étudié. – radnoise
Je n'ai pas essayé @page sur l'iPhone, mais je m'attendrais certainement à ce que Apple le supporte sur l'iPad, au moins dans une prochaine mise à jour. multicolonne fonctionne très bien dans les versions récentes de webkit (pas sûr à propos de iphone tho). – user336639