2011-01-28 28 views
15

Estoy empezando a preguntarme si esto es posible. He buscado soluciones en Google y no he encontrado nada que funcione exactamente como me gustaría.Conversión por lotes de docx para limpiar HTML

Creo que sería beneficioso explicar lo que eso conlleva. Trabajo para el grupo de base de datos en el departamento de TI de mi universidad. Mi trabajo principal es tomar las especificaciones de un informe en un archivo docx, copiarlo en dreamweaver, corregir algunos formatos y ponerlo en su sitio web. Mi problema es que es ridículamente tedioso hacer esto una y otra vez. Pensé, hey, no había escrito nada en C# desde hace algún tiempo, tal vez podría escribir una aplicación para tomar un archivo docx, convertirlo a HTML, corregir el CSS, pegar el encabezado y el pie de página de la página web allí y guarda el resultado Originalmente planeé hacerlo uno por uno, pero probablemente no sería difícil hacer que ingrese una lista de archivos y conversión por lotes.

He encontrado estos temas relevantes sobre cómo lograr esto, pero no se ajustan a mis necesidades lo suficientemente bien.

http://www.techrepublic.com/blog/howdoi/how-do-i-modify-word-documents-using-c/190

Esta es probablemente muy bien por algunos documentos, pero ya que es sólo la automatización de una instancia de Word, me siento como que sería lento y requiere mucha memoria. Preferiría evitar abrir y cerrar una instancia de Word 50+ veces.

http://openxmldeveloper.org/articles/333.aspx

Esto es lo que empecé a usar. XSLT tenía el beneficio de no necesitar la palabra para instalarse ni ejecutarse para cada archivo. Después de buscar, obtuve una prueba de concepto funcionando. Toma un archivo docx, lo descomprime, toma document.xml de eso y usa el archivo DocX2Html.xsl que eliminé del visor OpenXML. Creo que originalmente fue proporcionado por MS para servidores de punto compartido para proporcionar la capacidad de representar documentos de Word en un navegador. O algo por el estilo.

Después de ajustar ese código para satisfacer mis necesidades y tener problemas con el método objXSLT.Load(), terminé usando IlMerge para convertir el XSL en una DLL. No tengo idea de por qué seguía obteniendo un error de compilación cuando usaba el antiguo archivo XSL, pero el DLL funcionaba bien, así que estaba satisfecho. Aquí (http://pastebin.com/a5HBAakJ) es mi código actual. Hace el trabajo de convertir docx a HTML muy bien (aparte de espacios aleatorios entre algunas palabras), pero el archivo de resultados tiene una sintaxis HTML ridículamente fea. Un ejemplo de esta monstruosidad se puede encontrar aquí (http://pastebin.com/b8sPGmFE).

¿Alguien sabe cómo puedo remediar esto? Estoy pensando que tal vez necesito hacer un nuevo archivo XSL, ya que el único MS provisto es el responsable de incluir todas esas etiquetas y códigos adicionales ahí. Mi problema con eso es que no sé nada sobre cómo hacer eso. Tal vez haya una versión alternativa ya disponible. Todo lo que necesitaría es uno que preserve las tablas y el formato de texto. Las imágenes no son necesarias.

+0

Usted dice al principio que este es un proceso que está haciendo manualmente, pero luego no está contento con la solución de automatización de Word con uso intensivo de memoria. ¿Por qué? Si no está vendiendo esto como un producto comercial, ¿por qué es importante la eficacia de la solución? Está convirtiendo un proceso manual laborioso en uno automatizado, a quién le importa si lleva un minuto por documento, todavía va a ser millas más rápido. – Keith

+0

Es cierto que no lo estoy vendiendo como producto comercial. Sin embargo, tengo la intención de compartirlo con mis compañeros de trabajo, y prefiero ofrecerles un programa eficiente. Mi computadora personal puede ser moderna y estar a la altura de las especificaciones para manejar tales cosas, pero no tengo idea de cómo la manejarán. Otro problema es la dependencia de Word. Supongo que todos poseen una copia, pero eso es solo una suposición. Me gustaría ofrecerles un programa que funcione eficientemente independientemente de la computadora en la que lo ejecuten. – Omega192

Respuesta

6

Esto parece justo lo que necesita: http://msdn.microsoft.com/en-us/library/ff628051(v=office.14).aspx

El autor Eric White escribió sobre sus experiencias en desarrollo esa herramienta. Se puede ver que la lista de mensajes en su blog aquí: http://blogs.msdn.com/b/ericwhite/archive/2008/10/20/eric-white-s-blog-s-table-of-contents.aspx#Open_XML_to_XHtml

+0

Oh wow. Realmente no sé cómo nunca me encontré con esto en mi búsqueda. Supongo que estaba buscando docx a html en lugar de Open XML/WordprocessingML a XHTML. No he tenido la oportunidad de implementar esto todavía, pero parece exactamente lo que estoy buscando. ¡Muchas gracias! : D – Omega192

+1

¡Excelente! Una vez que termines este programa, estoy seguro de que a muchas personas les encantaría saber si esto funciona. Quizás una vez que finalice el programa, podría publicar el código fuente en algún lugar o algo así. ¡Buena suerte! –

+0

Definitivamente lo tendré en cuenta:] – Omega192

2

Como yo soy un gran fan de Aspose.Words, una biblioteca comercial para crear documentos de Word/proceso, me gustaría hacer algo como:

  1. Open the Word document with Aspose.Words .
  2. Save the Word document as HTML.
  3. Use algo como SgmlReader o HTML Agility Pack (o incluso Regular Expressions si es adecuado) para eliminar las etiquetas/atributos HTML no deseados.

Puesto que usted escribió que trabaja en una universidad, no estoy seguro de si los paquetes comerciales son una opción, sin embargo.

+1

Sí, encontré algunas soluciones comerciales, aunque no específicamente Aspose.Words. Este es solo un proyecto personal que estoy haciendo para ayudar a mis compañeros de trabajo y a mí mismo, así que estoy confiando en mi presupuesto para estudiantes universitarios de $ 0: P . Agradezco mucho su tiempo para responder a mi pregunta, ¡gracias! – Omega192

2

Hola, no estoy seguro de cuáles son las reglas para promocionar tus propias soluciones, por lo tanto, házmelo saber si estoy fuera de línea.

Soy un desarrollador web que tenía los mismos problemas, así que creé mi propia herramienta: http://www.convertwordtohtml.com

También estamos trabajando en una nueva versión que tendrá aún mejor calidad de conversión y de un clic de conversión Por ejemplo, puede Haga clic derecho en un archivo de palabras y se convertirá directamente en html y el código se colocará en el portapapeles. La versión actual también admite el acceso a la línea de comandos y la nueva versión tendrá una versión de servidor.

Hay una versión de prueba gratuita que se puede descargar desde el sitio, y si tiene alguna pregunta, contácteme en cualquier momento.

+1

Estoy bastante seguro de que es perfectamente aceptable hacerlo. Parece que ha creado una muy buena pieza de software, desafortunadamente no tengo dinero para comprar una licencia. ¡Gracias por tu publicación, sin embargo! – Omega192