72

我已经自动化了我的构建,使用 Pandoc 将 Markdown 文件转换为 DOCX 文件。我什至为最终文档的样式使用了参考文档。我使用的命令是:

pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx

reference.docxPandoc 提取,Pandoc使用与参考文档相同的样式进行docs/rendering渲染。mydoc.docx

但是,reference.docx包含的不仅仅是样式。它包含公司徽标、序言等。

如何自动将 Markdown 内容与reference.docx. 我的解决方案需要在 Linux 上运行。

4

4 回答 4

31

更新

使用用户 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 可以处理大约数百个参数,并且可能有一些方法可以使这个参数更漂亮。自从您第一次发布问题以来,它也得到了很多更新。

于 2017-01-03T14:21:12.880 回答
13

理想情况下,您可以使用自定义 docx 模板,但 pandoc 还不支持。reference.docx文件只允许将自定义样式嵌入到新创建的 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
于 2014-02-07T00:16:07.733 回答
11

理想情况下,PanDoc 会增加这个功能,但看起来不太可能很快。

我不知道有什么工具可以直接完成这项工作,但您可能会退回到合并reference.docx和您的 PanDoc 生成mydoc.docx的代码中。

.docx 格式是(主要是)XML 文件的 ZIP 存档。最重要的是word/document.xml。如果您使用 XML 工具从一个文件中获取(大部分)document.xml文件并将其插入到另一个文件中,那么您将获得更接近您需要的东西。

如果插图有帮助,我可以在 Ruby 中编写一个示例。

于 2013-11-22T14:41:09.473 回答
5

更新:此功能不完整

我在一些复杂的模板上使用它,发现它很好地映射了字体、公司徽标等。但是要使用 .docx -> .docx,我必须手动将标题样式应用于章节/分节符。字体是正确的,但切片不正确。我将尝试 .md -> .docx 接下来。


此功能现在在 Pandoc 中可用,如下所述:

Markdown 到 docx,包括复杂的模板

从上面的链接:

pandoc  input --reference-docx=my-reference.docx -o out.docx

其中my-reference.docx(nb not a .dotx) 可以是:

  • 当前文件夹或
  • 由 --data-dir 定义的文件夹或
  • data-dir 的系统默认文件夹是
    • $HOME/.pandoc 在类 UNIX 系统上
    • C:\Documents And Settings\USERNAME\Application Data\pandoc 在 Windows XP 上你不应该再使用
    • C:\Users\USERNAME\AppData\Roaming\pandoc 在 Windows Vista 或更高版本上。
于 2018-11-04T11:19:29.527 回答