texto simples justificado de HTML
Pergunta
Eu preciso de uma representação de texto simples de um arquivo HTML arbitrário (por exemplo, um blog). Até agora isso não é um problema, existem dezenas de HTML para conversores txt. No entanto, o texto nos parágrafos (leia-se "elementos p
") deve ser justificado em vista de texto simples (para uma certa quantidade de colunas) e, se possível, com hífens para dar um resultado melhor legível. Além disso, o arquivo de texto resultante deve ser UTF-8 ou UTF-16.
lisos simples conversa de texto que posso fazer com XSLT, que é próximo ao trivial. Mas a justificação do texto está além de suas possibilidades (não é bem verdade, porque XSLT é Turing completo, mas perto o suficiente para a realidade).
FOP e XSL-FO não quer trabalhar. Eles fazem conforme solicitado, mas a saída de texto simples da FOP é horrível (os desenvolvedores dizem, que não é destinado para tal uso).
Eu também experimentei com HTML -> XSLT -> Roff, mas eu estou preso com groff e seu suporte Unicode está longe de ser ideal. Uma vez que existem personagens como reticências ( "...") e marcas quotaion tipograficamente corretas, é bastante complicado para dizer groff na folha de estilo XSLT as sequências de escape para dezenas de caracteres Unicode.
Outra forma poderia ser a conversão para TeX e de saída como texto simples, mas eu nunca tentou isso antes com (La) TeX.
Talvez eu tenha perdido alguma coisa realmente simples. Alguém tem uma idéia, como eu poderia alcançar o acima? A propósito:. A solução deve de preferência trabalho sem direitos de root para instalar, com PHP, Python, Perl, XSLT ou qualquer outro programa encontrado em uma distro semi-decente Linux
Solução
Tente Python. Use BeautifulSoup para analisar o HTML. A textwrap módulo permitirá que você formate o texto.
Há duas características que faltam, no entanto. Para justificar o texto, você precisa adicionar espaços para cada linha, mas que não deve ser um grande problema (ver este exemplo de código ).
Para hifenização, tente este projecto .
Outras dicas
Se você estiver familiarizado com o Emacs, você pode abrir o arquivo HTML em Emacs-w3m ( ie M-x w3m-find-file foo.html
), salve a página processado como um arquivo de texto simples, e M-x set-justification-full
então chamada nele.
Você pode até escrever uma pequena função para fazer o trabalho:
(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")