2009-10-20 16 views
12

De vez en cuando recibo un documento de Word que tengo que mostrar como página web. Actualmente estoy usando las páginas planas de Django para lograr esto al tomar el contenido html generado por MS Word. El html generado es bastante desordenado. ¿Hay alguna manera mejor de generar un html muy simple para resolver este problema usando Python?¿Cómo se convierte un documento de Word en un html muy simple en Python?

Respuesta

6

Una buena solución consiste en cargar en Google Docs y exportar la versión html desde allí. (Debe haber una API para eso?)

Hace tantas "limpiezas"; Beautiful Soup en el camino puede usarse para hacer cualquier cambio adicional, según corresponda. Es la biblioteca de análisis html más poderosa y elegante del planeta.

Este es un estándar conocido para las empresas de periodismo.

+1

¿Pero cómo exactamente lo haces desde Google Docs? Subo mi documento MSWord y elijo la opción de conversión - pierde todos los diagramas – likejiujitsu

2

Depende de cuánto formato e imágenes está tratando. Hago uno de un par de cosas:

  • Google Docs: Probablemente el que más se aproxima al formato HTML original y útil.
  • Margen: Abandonar el formateo. Pégalo en un editor de texto plano, ejecútalo a través de Markdown y arregla el resto a mano.
+1

¿Cómo obtengo el HTML de Google Doc? ¿Es la opción Descargar como HTML? –

+1

+1: los archivos de Word Doc son * muy * difíciles de trabajar. Muchas herramientas los convertirán, incluida Open Office. Google Docs tiene una API simple, ya que es un servicio web HTTP. –

+3

MS Word -> HTML es simplemente malvado. Hice que un cliente me entregara un documento de Word de 95 (!) Páginas que contenía cientos de "lugares para ver" y decía: "Debería ser fácil ingresar esto en la base de datos". Arrggghh! Lo hice y le cobré $ 100 por hora por el privilegio, pero creo que no cobré suficiente debido a la cantidad de dolor. El HTML fue el peor con el que he tenido que trabajar. –

2

También puede utilizar Abiword/wvWare para convertir documento de Word a XHTML y luego analizarlo con BeautifulSoup/ElementTree/etc. para preprocesarlo si lo necesita. En mi experiencia, Abiword hace un buen trabajo al convertir archivos de Word y producir archivos XHTML relativamente limpios.

Debo mencionar que Abiword se puede ejecutar en la línea de comandos, por lo que es fácil integrarlo en un proceso automatizado.

3

Mi aplicación súper simple WordOff tiene API para limpiar restos de HTML exportado por Word. Puede anular el método de guardar de su modelo de páginas planas para canalizar su HTML a través de la API la primera vez que se guarda. Algo como esto:

import urllib 
import urllib2 

def decruft(html): 
    data = urllib.urlencode({'html' : html}) 
    req = urllib2.Request('http://wordoff.org/api/clean', data) 
    response = urllib2.urlopen(req) 
    return response.read() 

def save(self, **kwargs): 
    if not self.pk: # only de-cruft when content is first added 
     self.content = decruft(self.content) 
    super(FlatPage, self).save(**kwargs) 
+0

WordOff es bastante bueno en este tipo de cosas –

+2

Si desea utilizar Wordoff localmente, puede descargar el módulo y usar su método "superClean" para obtener el mismo resultado: https://raw.github.com/tomdyson/wordoff/ master/wordoff.py –

+4

Hey tomd, WordOff.org ya expiró a pesar de – fedmich

2

Word 2010 tiene la capacidad de "guardar como página web filtrada". Esto eliminará la abrumadora mayoría del HTML que Word inserta.

4

me encontré con esta página web: http://www.textfixer.com/html/convert-word-to-html.php

Convierte un texto con formato a sencilla marcado HTML, preservando negrita, cursiva, enlaces y párrafos, pero no la adición de etiquetas de tamaños de fuente y caras. Exactamente lo que necesitaba para ahorrar algo de tiempo.

+0

¡Esto es increíble! Funciona exactamente como yo quisiera. – Justin

Cuestiones relacionadas