Pregunta

Necesito un proceso automatizado para crear archivos DOCX a partir de la fuente XHTML. Los archivos XHTML contienen imágenes (<img> elementos) cuyos atributos "src" apuntan a una referencia externa. Pero los archivos DOCX deben ser legibles sin una conexión de red, por lo que necesito encontrar una manera de incrustar las imágenes directamente en el paquete DOCX (a saber, en la carpeta /medios).

Hasta ahora he usado el método altchunk (como se describe por Eric White) para crear el archivo .docx. Esperaba usar el SDK OpenXML para insertar las partes de la imagen en el paquete. Pero para hacerlo necesito insertar párrafos (<p> nodos) en el documento. Desafortunadamente, la parte del documento no contiene más que una referencia al Altchunk (almacenado por separado en el paquete DOCX). Por supuesto, una vez que el DOCX se abre, edita y guarda, la parte Altchunk se elimina y sus contenidos se incrustan correctamente en el documento.xml. Pero no sé de ninguna forma de hacerlo programáticamente, por lo que eso no ayuda.

Otras opciones que he considerado:

  1. Partido el XHTML en segmentos, separados entre cada imagen, luego agregando cada altchunk uno a la vez, con la referencia de imagen apropiada entre cada uno. (Tedioso pero parece posible)
  2. Insertar las imágenes en la carpeta de medios, y luego encontrar la forma de incrustar el procesamiento de palabras que directamente en el XHTML para que el <img> Referencias el archivo de imagen empaquetado. (Cuestionable en el mejor de los casos) ¿Alguien puede pensar en un mejor enfoque?
¿Fue útil?

Solución

Bueno, resolví mi propio problema: decidí convertir el documento en MHTML (que puede contener imágenes incrustadas directamente en el archivo) y luego usar el Altchunk para crear el archivo DOCX final. Sin embargo, todavía quería hacer un postprocesamiento en el archivo (para insertar notas finales en el documento de Word), pero como se mencionó anteriormente, esto no es posible hasta después Altchunk se ha transformado en DOCX, que no se puede hacer mediante programación.

Así que me di cuenta de que podía pasar por alto la ruta altchunk por completo y simplemente usar MHTML como "puerta de enlace" de XHTML a Docx. Acabo de transformar el XHTML en MHTML, completo con imágenes incrustadas y EndNotes, luego renombró el archivo con una extensión .doc. El documento resultante se puede abrir directamente mediante Word (y se convertirá más correctamente en el guardado posterior). Hasta ahora funciona muy bien (aunque con algunos errores en la versión de Word de Mac, así como Word2003).

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