Question

J'ai besoin d'une représentation en texte brut d'un fichier HTML arbitraire (par exemple, un article de blog). Jusqu'à présent, ce n'est pas un problème, il existe des dizaines de convertisseurs HTML en convertisseurs txt. Toutefois, le texte des paragraphes (lire " p éléments") doit être justifié dans la vue en texte brut (avec un certain nombre de colonnes) et, si possible, avec un trait d'union pour un résultat plus lisible. De plus, le fichier texte résultant doit être UTF-8 ou UTF-16.

Je peux faire une conversation en texte brut avec XSLT, ce qui est presque trivial. Mais la justification du texte dépasse ses possibilités (pas tout à fait vrai, car XSLT est complet, mais suffisamment proche de la réalité).

FOP et XSL-FO ne fonctionnent pas non plus. Ils font ce qui leur est demandé, mais la sortie de texte brut de FOP est horrible (les développeurs disent qu'elle n'est pas destinée à un tel usage).

J'ai aussi expérimenté HTML - > XSLT - > Roff, mais je suis coincé avec groff et son support Unicode est loin d'être optimal. Comme il existe des caractères tels que des ellipses ("...") et des marques de quota typographiquement correctes, il est assez fastidieux de dire à groff dans la feuille de style XSLT les séquences d'échappement de dizaines de caractères Unicode.

Une autre solution pourrait consister en une conversion en TeX et une sortie en texte brut, mais je n’avais jamais essayé cela auparavant avec (La) TeX.

J'ai peut-être manqué quelque chose de très simple. Quelqu'un a-t-il une idée de la façon dont je pourrais atteindre ce qui précède? Soit dit en passant: une solution devrait de préférence fonctionner sans droits root, avec PHP, Python, Perl, XSLT ou n’importe quel programme trouvé dans une distribution Linux à la décente.

Était-ce utile?

La solution

Essayez Python. Utilisez BeautifulSoup pour analyser le code HTML. Le module textwrap vous permettra de formater le texte.

Il manque cependant deux fonctionnalités. Pour justifier le texte, vous devez ajouter des espaces à chaque ligne, mais cela ne devrait pas être un gros problème (voir cet exemple de code ).

Pour la césure, essayez ce projet .

Autres conseils

Si vous connaissez Emacs, vous pouvez ouvrir le fichier HTML dans Emacs-W3M ( Par exemple, Mx w3m-find-file foo.html ), enregistrez la page rendue en tant que fichier texte brut, puis appelez Mx set-justification-full dessus.

Vous pouvez même écrire une petite fonction pour faire le travail:

(defun my-html-to-justifed-text (html-file text-file)
  "Convert HTML-FILE to plain TEXT-FILE."
  (find-file html-file)
  (w3m-rendering-buffer)
  (set-justification-full (point-min) (point-max))
  (write-file text-file))

(my-html-to-justifed-text "~/tmp/2.html" "~/tmp/2.txt")

Liens ou lynx pourrait valoir la peine d’être essayé, voir la touche -dump . La partie encodage que vous pouvez ensuite résoudre facilement séparément à l’aide de iconv ou d'un outil similaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top