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.
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
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