Pergunta

Preciso de um processo automatizado para criar arquivos DOCX a partir da fonte XHTML. Os arquivos xhtml contêm imagens (<img> elementos) cujos atributos "SRC" apontam para uma referência externa. Mas os arquivos DOCX precisam ser legíveis sem uma conexão de rede, por isso preciso encontrar uma maneira de incorporar as imagens diretamente no pacote DOCX (a saber, na pasta /mídia).

Até agora eu usei o método Altchunk (conforme descrito por Eric White) para criar o arquivo .docx. Eu esperava usar o SDK OpenXML para inserir as partes da imagem no pacote. Mas para fazer isso, preciso inserir parágrafos (<p> nós) no documento. Infelizmente, a parte do documento não contém nada além de uma referência ao Altchunk (armazenado separadamente no pacote DOCX). Obviamente, uma vez que o DOCX seja aberto, editado e salvo, a parte Altchunk é removida e seu conteúdo é incorporado corretamente no documento.xml. Mas não conheço nenhuma maneira de fazer isso programaticamente, para que isso não ajude.

Outras opções que eu considerei:

  1. Particionando o XHTML em segmentos, separados entre cada imagem, adicionando cada altchunk um de cada vez, com a referência de imagem apropriada entre cada um. (Tedioso, mas parece possível)
  2. Inserir as imagens na pasta de mídia e depois encontrar uma maneira de incorporar o WordProcessingMl diretamente no xhtml para que o <img> Referências o arquivo de imagem embalado. (Questionável na melhor das hipóteses) Alguém pode pensar em uma abordagem melhor?
Foi útil?

Solução

Bem, eu meio que resolvi meu próprio problema: decidi converter o documento em MHTML (que pode conter imagens incorporadas diretamente no arquivo) e depois usar o AltChunk para criar o arquivo DOCX final. No entanto, eu ainda queria fazer algum pós-processamento no arquivo (para inserir notas finais no documento do Word), mas como mencionado acima, isso não é possível até depois O Altchunk foi transformado em DOCX, que não pode ser feito programaticamente.

Então me ocorreu que eu poderia ignorar completamente o caminho Altchunk e simplesmente usar o MHTML como o "gateway" do XHTML para o DOCX. Acabei de transformar o xhtml em mhtml, completo com imagens incorporadas e NOTAS END e renomearam o arquivo com uma extensão .doc. O documento resultante pode ser aberto diretamente pelo Word (e será convertido mais adequadamente em salvamento subsequente). Até agora, funciona muito bem (embora com alguns bugs na versão do Word do Mac, bem como no Word2003).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top