Markdown 到 docx,包括复杂的模板

问题描述 投票:0回答:5

我已经使用 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 上运行。

markdown docx pandoc
5个回答
40
投票

更新

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


14
投票

理想情况下,您可以使用自定义 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

10
投票

理想情况下,PanDoc 会增加此功能但看起来不太可能很快就会实现。

我不知道有什么工具可以直接完成这项工作,但你可能可以回退到合并

reference.docx
和你的 PanDoc 生成的
mydoc.docx
在代码中。

.docx 格式是(大部分)XML 文件的 ZIP 存档。最重要的是

word/document.xml
。如果您使用 XML 工具从一个文件中获取(大部分)
document.xml
并将其插入到另一个文件中,您将得到更接近您需要的内容。

如果插图有帮助的话,我可以用 Ruby 编写一个示例。


10
投票

更新:此功能不完整

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


此功能现已在 Pandoc 中提供,如下所述:

Markdown 到 docx,包括复杂的模板

来自上面的链接:

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

其中

my-reference.docx
(注意不是
.dotx
)可以是:

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

0
投票

尝试一下免费工具 MassiveMark Playground。

© www.soinside.com 2019 - 2024. All rights reserved.