减less到docx,包括复杂的模板
我已经自动构build了使用Pandoc将Markdown文件转换为DOCX文件。 我甚至使用了最终文档样式的参考文档。 我使用的命令是:
pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx
reference.docx
由Pandoc从docs/rendering
拾取,而Pandoc mydoc.docx
使用与参考文档相同的样式呈现mydoc.docx
。
但是, reference.docx
包含的不仅仅是样式。 它包含公司徽标,序言等
如何自动将Markdown内容与reference.docx
的样式和内容进行合并。 我的解决scheme需要在Linux上工作。
理想情况下,PanDoc将会增加这个function, 但是很快就不会有这种可能 。
我不知道任何可以直接完成这个工作的工具,但是你可能会回到合并reference.docx
和你的代码中的PanDoc生成的mydoc.docx
。
.docx格式是(大部分)XML文件的ZIP存档。 最重要的是word/document.xml
。 如果使用XML工具从一个文件中获取(大部分) document.xml
并将其插入到另一个文件中,则可以获得更接近您所需的东西。
如果一个插图能够帮助,我可以在Ruby中一个例子。
理想情况下,您可以使用自定义的docx模板,但是pandoc还不支持。 reference.docx
文件只允许将自定义样式embedded到新创build的docx文件中。
幸运的是,您可以使用odt而不是docx来近似这个值。 您可以相当容易地修改默认的OpenDocument模板,以包含您的自定义徽标,序言和其他内容。 将自定义模板与reference.odt
文件结合使用以获取所有样式和自定义内容。
一旦你有odt格式的文件,你可以使用任意数量的命令行工具将odt转换为docx。 例如,在Linux上可以运行
libreoffice --invisible --convert-to docx test.odt
或者在OS X上:
/Applications/LibreOffice.app/Contents/MacOS/soffice.bin --invisible --convert-to docx test.odt
我知道这是迟来的,但是我会假设人们在原来的问题后三年仍然在寻找解决scheme – 我知道我是。
我的解决scheme是使用LaTeX作为markdown和docx之间的中介(实际上,我是从org-mode转换的,但是同样的区别)。 所以在你的情况下,我相信一个单线解决scheme是:
pandoc -f markdown -t latex -o mydoc.tex mydoc.md && \ pandoc -f latex -t docx --data-dir=docs/rendering/ -o mydoc.docx mydoc.tex
这可能会让你更接近你的目标。 当然,Pandoc可以处理大约一百个参数,而且有可能使这个更漂亮。 自从您首次发布您的问题以来,它也得到了不less更新。