online - Markdown a docx, incluida la plantilla compleja
markdown tutorial (3)
He automatizado mi compilación para convertir archivos Markdown a archivos DOCX usando Pandoc. Incluso he usado un documento de referencia para el diseño del documento final. El comando que uso es:
pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx
mydoc.docx
la referencia.docx de docs/rendering
y mydoc.docx
representa mydoc.docx
con los mismos estilos que el documento de referencia.
Sin embargo, reference.docx
contiene más que solo estilos. Contiene logotipos corporativos, preámbulo, etc.
¿Cómo puedo automatizar la fusión del contenido de Markdown con los estilos y el contenido de reference.docx
? Mi solución necesita funcionar en Linux.
Idealmente, PanDoc hará crecer esta característica, pero no parece probable en el corto plazo.
No conozco ninguna herramienta que pueda hacer el trabajo directamente, pero probablemente podría recurrir a la fusión de reference.docx
y su código mydoc.docx producido por mydoc.docx
.
El formato .docx es un archivo ZIP de (principalmente) archivos XML. El más importante es word/document.xml
. Si usa una herramienta XML para tomar (la mayoría de) document.xml
de un archivo e insertarlo en el otro, tendrá algo más cercano a lo que necesita.
Podría hackear juntos un ejemplo en, digamos, Ruby si una ilustración ayudaría.
Lo ideal sería utilizar una plantilla docx personalizada, pero pandoc aún no es compatible. Un archivo reference.docx
solo permite incrustar estilos personalizados en archivos docx recién creados.
Afortunadamente puedes aproximar esto usando odt en lugar de docx. Puede modificar con bastante facilidad la plantilla predeterminada de OpenDocument para incluir sus logotipos, preámbulos y otras cosas personalizadas. Use la plantilla personalizada junto con un archivo reference.odt
para obtener todos los estilos y el contenido personalizado.
Una vez que tenga el archivo en formato odt, puede usar cualquier cantidad de herramientas de línea de comando para convertir de odt a docx. Por ejemplo, en Linux puedes ejecutar
libreoffice --invisible --convert-to docx test.odt
O en OS X:
/Applications/LibreOffice.app/Contents/MacOS/soffice.bin --invisible --convert-to docx test.odt
Sé que esto es tarde, pero supongo que la gente todavía está buscando soluciones a esto tres años después de la pregunta original, sé que lo era.
Mi solución fue utilizar LaTeX como intermediario entre markdown y docx (en realidad, estaba convirtiendo de org-mode, pero con la misma diferencia). Entonces, en su caso, creo que una solución de una sola línea sería:
pandoc -f markdown -t latex -o mydoc.tex mydoc.md && /
pandoc -f latex -t docx --data-dir=docs/rendering/ -o mydoc.docx mydoc.tex
Lo cual podría acercarlo más a su objetivo. Por supuesto, Pandoc tiene cientos de argumentos que puede manejar, y probablemente haya formas de hacerlo más bonito. También ha recibido bastantes actualizaciones desde que publicó su pregunta por primera vez.