J'ai automatisé ma génération pour convertir des fichiers Markdown en fichiers DOCX à l'aide de Pandoc. J'ai même utilisé un document de référence pour le style du document final. La commande que j'utilise est:
pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx
Le reference.docx
est récupéré par Pandoc auprès de docs/rendering
et Pandoc rend mydoc.docx
avec les mêmes styles que le document de référence.
Toutefois, reference.docx
contient plus que des styles. Il contient des logos coporés, un préambule, etc.
Comment puis-je automatiser la fusion du contenu Markdown avec les styles et le contenu de reference.docx
. Ma solution doit fonctionner sous Linux.
Mise à jour
Utilisez la version pipée suggérée par l'utilisateur Christian Long:
pandoc -t latex mydoc.md | pandoc -f latex --data-dir=docs/rendering/ -o mydoc.docx
Je sais que cela tarde à venir, mais je suppose que les gens sont toujours à la recherche de solutions à ce problème trois ans après la question initiale - je le sais.
Ma solution était d'utiliser LaTeX comme intermédiaire entre markdown et docx (en fait, je convertissais du mode org, mais même différence). Donc, dans votre cas, je pense qu'une solution à une ligne serait:
pandoc -f markdown -t latex -o mydoc.tex mydoc.md && \
pandoc -f latex -t docx --data-dir=docs/rendering/ -o mydoc.docx mydoc.tex
Ce qui pourrait vous rapprocher de votre objectif. Bien sûr, Pandoc a une centaine d'arguments qu'il peut gérer, et il existe probablement des moyens de rendre cela plus joli. Il a également reçu plusieurs mises à jour depuis la première publication de votre question.
Idéalement, vous pouvez utiliser un modèle docx personnalisé, mais pandoc ne le prend pas encore en charge. UNE reference.docx
le fichier permet uniquement d'incorporer des styles personnalisés dans les fichiers docx nouvellement créés.
Heureusement, vous pouvez l'approcher en utilisant odt au lieu de docx. Vous pouvez assez facilement modifier le modèle OpenDocument par défaut pour inclure vos logos personnalisés, préambule et autres choses. Utilisez le modèle personnalisé conjointement avec un reference.odt
fichier pour obtenir tous les styles et le contenu personnalisé.
Une fois que vous avez le fichier au format odt, vous pouvez utiliser n'importe quel nombre d'outils de ligne de commande pour convertir d'odt en docx. Par exemple, sous Linux, vous pouvez exécuter
libreoffice --invisible --convert-to docx test.odt
Ou sous OS X:
/Applications/LibreOffice.app/Contents/MacOS/soffice.bin --invisible --convert-to docx test.odt
Idéalement, PanDoc développera cette fonctionnalité mais cela ne semble pas probable de sitôt.
Je ne connais aucun outil qui fera le travail directement, mais vous pourriez probablement revenir à la fusion reference.docx
et votre produit PanDoc mydoc.docx
dans du code.
Le format .docx est une archive Zip (principalement) de fichiers XML. Le plus important est Word/document.xml
. Si vous utilisez un outil XML pour prendre (la plupart) le document.xml
d'un fichier et insérez-le dans l'autre, vous aurez quelque chose de plus proche de ce dont vous avez besoin.
Je pourrais pirater un exemple, par exemple, Ruby si une illustration pouvait aider.
Je l'ai utilisé sur certains modèles complexes et je l'ai trouvé très bien mappé les polices, les logos d'entreprise, etc. Mais en utilisant .docx -> .docx, j'ai dû appliquer manuellement des styles de titre aux sauts de chapitre/section. La police était correcte, mais pas la section. Je vais essayer .md -> .docx ensuite.
Cette fonctionnalité est désormais disponible dans Pandoc, comme décrit ici:
Markdown à docx, y compris le modèle complexe
À partir du lien ci-dessus:
pandoc input --reference-docx=my-reference.docx -o out.docx
où my-reference.docx
(n.b. pas un .dotx
) peut être: