Pregunta

Necesito una representación de texto sin formato de un archivo HTML arbitrario (por ejemplo, una publicación de blog). Hasta ahora eso no es un problema, hay docenas de convertidores HTML a txt. Sin embargo, el texto en los párrafos (leer " elementos p ") debe justificarse en la vista de texto sin formato (a una cierta cantidad de columnas) y, si es posible, con guión para obtener un mejor resultado legible. Además, el archivo de texto resultante debe ser UTF-8 o UTF-16.

Conversación de texto sin formato simple que puedo hacer con XSLT, eso es casi trivial. Pero la justificación del texto está más allá de sus posibilidades (no del todo cierto, porque XSLT es Turing completo, pero lo suficientemente cerca de la realidad).

FOP y XSL-FO tampoco funcionan. Hacen lo solicitado, pero la salida de texto sin formato de FOP es horrible (los desarrolladores dicen que no está destinada para tal uso).

También experimenté con HTML - > XSLT - > Roff, pero estoy atascado con groff y su soporte Unicode está lejos de ser óptimo. Dado que hay caracteres como elipses (" ... ") y comillas tipográficamente correctas, es bastante engorroso decirle a groff en la hoja de estilo XSLT las secuencias de escape para docenas de caracteres Unicode.

Otra forma podría ser la conversión a TeX y la salida como texto sin formato, pero nunca antes lo había intentado con (La) TeX.

Quizás me he perdido algo realmente simple. ¿Alguien tiene una idea, cómo podría lograr lo anterior? Por cierto: una solución debería funcionar preferiblemente sin derechos de root para instalar, con PHP, Python, Perl, XSLT o cualquier programa que se encuentre en una distribución de Linux medio decente.

¿Fue útil?

Solución

Prueba Python. Utilice BeautifulSoup para analizar el HTML. El módulo textwrap le permitirá formatear el texto.

Sin embargo, faltan dos características. Para justificar el texto, deberá agregar espacios a cada línea, pero eso no debería ser un gran problema (consulte este ejemplo de código ).

Para la separación silábica, intente este proyecto .

Otros consejos

Si está familiarizado con Emacs, puede abrir el archivo HTML en Emacs-W3M ( es decir, Mx w3m-find-file foo.html ), guarde la página representada como un archivo de texto sin formato y luego llame a Mx set-justification-full en ella.

Incluso puedes escribir una pequeña función para hacer el trabajo:

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

Enlaces o lynx podría valer la pena intentarlo, vea el interruptor -dump . La parte de codificación se puede resolver fácilmente por separado usando iconv o algo similar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top