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

Foi útil?

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")

Ligações ou lynx poderia ser uma tentativa vale a pena, consulte o interruptor -dump. A parte de codificação você pode então facilmente resolver separadamente usando iconv ou algo similar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top