减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更新。

    Interesting Posts