2009-12-16 5 views

Répondre

4

En supposant que vous êtes heureux de reconnaître qu'un sous-ensemble de balises HTML sans CSS (ici, je suppose < p/> < b/> < i/> < br/> balises uniquement, plus < font size =/> pour les changements de taille de la police (avec d'autres attributs ignorŽ) <img> balises pour les images avec tous, mais src, la largeur, la hauteur et la largeur ignora précise et la hauteur obligatoire avec toutes les autres balises/attributs ignorés): -

  1. TidyLib semble avoir une licence MIT - http://tidy.sourceforge.net/#source

  2. SAX parser la sortie XHTML de TidyLib utilisant NSXmlParser dans un modèle d'objet personnalisé (sauf si vous exclusivement utilisez les versions ultérieures de l'iPhone OS avec API analyseur DOM publique builtin auquel cas il suffit d'utiliser un modèle d'objet DOM). Configurez une machine d'état avec une position de curseur en haut à gauche de la page et la taille et le formatage initiaux, le numéro de page 1, la hauteur maximale des glyphes/images dans la ligne zéro et la liste vide des limites de page. Appliquez des modifications de taille/format de police précedentes, mesurez le texte à l'aide des appels de mesure du texte iPhone, réduisez la longueur du texte (découpez dans l'espace ou le tiret le plus proche) jusqu'à ce que le texte soit ajusté ligne, et en réinitialisant le signe d'insertion à la ligne commençant et en continuant pour les retours à la ligne, et appliquent les changements de taille de police et de mise en forme suivants. Surdimensionner la largeur et la hauteur du texte par un facteur dans les cas où cela est jugé nécessaire pour empêcher le débordement de page dans le moteur de rendu de page réel (UIWebView, vous devrez expérimenter pour voir quels sont les facteurs dans le moteur de rendu) . Enregistrer la limite de la page dans la liste.

  3. Convertissez des objets entre les limites de page en XHTML simplifié pour chaque page. Vous voudrez peut-être ajouter des CSS à ce stade, par exemple pour mettre en forme les couleurs des liens. Vous devrez convertir les références locales en ancres sur une autre page pour charger l'autre page correcte. Peut-être ajouter un pied de page/en-tête avec les numéros de page (soustraire la taille de ceux-ci de la hauteur de la page dans les étapes précédentes).

  4. Enregistrer XHTML comme ensemble de fichiers.

Essentiellement, cela fonctionnera tant que le code source HTML est spécialement préparé pour utiliser un sous-ensemble de HTML pour votre application. Tout ancien HTML ne fera pas, bien qu'il ne soit peut-être pas complètement inutile de donner une idée approximative des aperçus dans certains cas pour certains fichiers.

La description ci-dessus suppose que vous jetez la mise en forme comme ALIGN = et les tables. C'est vraiment une approche très basique et ne reproduira pas des pages complexes comme cela a été conçu à l'origine! Cela pourrait ne pas vous convenir! Il se peut que les fichiers doivent être prétraités avant d'atteindre les iPhones sur le terrain, mais si le comportement de l'encapsulation/du test de l'iPhone OS/WebView change, la meilleure position pour les sauts de page peut changer. Il se peut donc que vous deviez découper vos pages plus petites que vous ne le pensiez pour permettre une croissance inattendue lorsque le moteur de rendu change. Hmm. Ce n'est peut-être pas une tâche facile!

Je n'ai même pas essayé d'analyser les tableaux HTML ... Le HTML est bien sûr, dans sa gloire pleine non restreinte, énormément probablement incroyablement complexe.

+0

Merci pour la bonne explication! – sashaeve

Questions connexes