Domanda

Ho bisogno di una rappresentazione in testo semplice di un file HTML arbitrario (ad esempio, un post sul blog). Finora non è un problema, ci sono dozzine di convertitori da HTML a txt. Tuttavia, il testo nei paragrafi (leggi " p elementi ") dovrebbe essere giustificato nella vista di testo semplice (per un certo numero di colonne) e, se possibile, sillabato per fornire un risultato leggibile meglio. Inoltre, il file di testo risultante deve essere UTF-8 o UTF-16.

Semplice conversazione in chiaro che posso fare con XSLT, che è quasi banale. Ma la giustificazione del testo è oltre le sue possibilità (non del tutto vera, perché XSLT è Turing completo, ma abbastanza vicino alla realtà).

FOP e XSL-FO non funzionano neanche. Fanno come richiesto, ma l'output del testo in chiaro di FOP è orribile (gli sviluppatori dicono che non è destinato a tale uso).

Ho anche sperimentato HTML - > XSLT - > Roff, ma sono bloccato con groff e il suo supporto Unicode è tutt'altro che ottimale. Dato che ci sono caratteri come ellissi (" ... ") e segni di quota tipograficamente corretti, è abbastanza ingombrante dire a groff nel foglio di stile XSLT le sequenze di escape per dozzine di caratteri Unicode.

Un altro modo potrebbe essere la conversione in TeX e l'output come testo normale, ma non ho mai provato prima con (La) TeX.

Forse mi sono perso qualcosa di molto semplice. Qualcuno ha un'idea, come potrei ottenere quanto sopra? A proposito: una soluzione dovrebbe preferibilmente funzionare senza i diritti di root da installare, con PHP, Python, Perl, XSLT o qualsiasi programma trovato in una distribuzione Linux decente.

È stato utile?

Soluzione

Prova Python. Usa BeautifulSoup per analizzare l'HTML. Il modulo textwrap ti permetterà di formattare il testo.

Tuttavia, mancano due funzioni. Per giustificare il testo, dovrai aggiungere spazi a ciascuna riga, ma questo non dovrebbe essere un grosso problema (vedi questo esempio di codice ).

Per la sillabazione, prova questo progetto .

Altri suggerimenti

Se hai familiarità con Emacs, puoi aprire il file HTML in Emacs-W3M ( ad es. Mx w3m-find-file foo.html ), salva la pagina renderizzata come file di testo semplice, quindi chiama Mx set-justification-full su di essa.

Puoi anche scrivere una piccola funzione per fare il lavoro:

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

Link o lynx potrebbe valere la pena di provare, vedi l'opzione -dump . La parte di codifica che puoi facilmente risolvere separatamente utilizzando iconv o qualcosa di simile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top