降价至docx,包括复杂模板

时间:2013-01-10 02:12:17

标签: markdown docx pandoc

我已经自动构建了使用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上运行。

4 个答案:

答案 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)可以是:

  • 当前文件夹或
  • 由--data-dir OR定义的文件夹
  • data-dir的系统默认文件夹为
    • 类似UNIX的系统上的$ HOME / .pandoc
    • 在Windows XP上,C:\ Documents and Settings \ USERNAME \ Application Data \ pandoc,您不应再使用
    • 在Windows Vista或更高版本上,C:\ Users \ USERNAME \ AppData \ Roaming \ pandoc。