我已经自动构建了使用Pandoc将Markdown文件转换为DOCX文件。我甚至使用参考文档来确定最终文档的样式。我使用的命令是:
pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx
Pandoc从reference.docx
获取docs/rendering
,而Pandoc使用与参考文档相同的样式呈现mydoc.docx
。
但是,reference.docx
不仅包含样式。它包含公司徽标,序言等。
如何自动将Markdown内容与reference.docx
的样式和内容合并。我的解决方案需要在Linux上运行。
答案 0 :(得分:23)
<强>更新强>
使用用户Christian Long建议的管道版:
pandoc -t latex mydoc.md | pandoc -f latex --data-dir=docs/rendering/ -o mydoc.docx
我知道这是迟到的,但我会假设人们仍然在寻找原始问题后三年的解决方案 - 我知道我是。
我的解决方案是使用LaTeX作为markdown和docx之间的中介(实际上,我是从org-mode转换,但是相同的区别)。所以在你的情况下,我相信一个单线解决方案将是:
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有大约一百个它可以处理的参数,并且可能有办法使这个更漂亮。自您第一次发布问题以来,它也获得了不少更新。
答案 1 :(得分:12)
理想情况下,您可以使用自定义docx模板,但pandoc尚不支持。 reference.docx
文件仅允许将自定义样式嵌入到新创建的docx文件中。
幸运的是,您可以使用odt而不是docx来估算这个。您可以相当轻松地修改default OpenDocument template以包含您的自定义徽标,前导码和其他内容。将自定义模板与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
答案 2 :(得分:11)
理想情况下,PanDoc将很快发展此功能but it doesn't look like likely。
我不知道任何可以直接完成这项工作的工具,但您可能会在代码中重新合并reference.docx
和PanDoc生成的mydoc.docx
。
.docx格式是(大部分)XML文件的ZIP存档。最重要的是word/document.xml
。如果您使用XML工具从一个文件中取出(大部分)document.xml
并将其插入另一个文件中,您将获得更接近您所需的文件。
如果插图有帮助,我可以将Ruby中的一个例子合并在一起。
答案 3 :(得分:1)
我在一些复杂的模板上使用了它,发现它很好地映射了字体,公司徽标等。但是在使用.docx-> .docx时,我不得不将标题样式手动应用于章节/分节符。字体是正确的,但该节不是。接下来,我将尝试.md-> .docx。
Pandoc中现已提供此功能,如下所述:
Markdown to docx, including complex template
从上面的链接:
pandoc input --reference-docx=my-reference.docx -o out.docx
其中my-reference.docx
(n.b。不是.dotx
)可以是: