如何将 doc/docx 文件转换为 markdown 或结构化文本?

Posted

技术标签:

【中文标题】如何将 doc/docx 文件转换为 markdown 或结构化文本?【英文标题】:How can doc/docx files be converted to markdown or structured text? 【发布时间】:2013-04-29 07:01:57 【问题描述】:

是否有将.doc.docx 文件转换为Markdown 或类似文本的程序或工作流程?

PS:理想情况下,我会欢迎将 MS Word 文档中的特定字体(例如 consolas)呈现为 text-code: ```....``` 的选项。

【问题讨论】:

看起来pandoc 现在支持从.docx.md 的直接转换,包括数学公式。看看here 示例 35。 查看 wordtomarkdown.com。 Windows 商店中有一个有用的应用程序。它比 Pandoc 做得更多,包括表格、图像和代码。 【参考方案1】:

Pandoc 支持直接从 docx 到 markdown 的转换:

pandoc -f docx -t markdown foo.docx -o foo.markdown

支持多种降价格式:

-t gfm (GitHub-Flavored Markdown)  
-t markdown_mmd (MultiMarkdown)  
-t markdown (pandoc’s extended Markdown)  
-t markdown_strict (original unextended Markdown)  
-t markdown_phpextra (PHP Markdown Extra)  
-t commonmark (CommonMark Markdown)  

【讨论】:

使用自制软件 (brew install pandoc) 测试并在 OS-X El Capitan 上工作 Word 表格没有正确转换 - 只是在 MD 中以纯文本结束。 有什么办法可以保存图片吗? 关于从Word文件中保存图像的问题:将Word文档另存为html。 Word 将文档的所有图像放在一个单独的文件夹中。有保存为 JPG 或 PNG 的选项... 要保存图像,请将选项--extract-media=./ 添加到上面的命令中。它将创建一个包含所有图像的文件夹media,它们将正确显示在降价文件中。【参考方案2】:

docx -> 降价

特别是关于问题 (docx --> markdown),请使用 Microsoft Word 的 Writeage 插件。它也适用于markdown --> docx

更多选项

    使用转换工具进行多文件转换。 对单个文件和高级字体使用 WYSIWYG 编辑器。

哪些转换工具?

我已经测试了这三个:(1) Pandoc (2) Mammoth (3) w2m

潘多克

到目前为止,支持多种文件类型的卓越转换工具(有关支持的文件类型,请参阅 Pandoc 的 man page):

pandoc -f docx -t gfm somedoc.docx -o somedoc.md
注意

要让pandoc 导出ma​​rkdown 表(pandoc 中的“pipe_tables”),请使用multimarkdowngfm 输出格式。

如果格式化为 PDF,pandoc 会为此使用 LaTeX 模板,因此如果该命令无法开箱即用,您可能需要为您的操作系统安装 LaTeX 包。说明LaTeX Installation

哪些所见即所得的编辑器?

对于docx,使用Writeage。

维护高级字体

如果您希望保留 unicode 字符emojis 并保持优质字体,则在使用 copy 时,您将从下面的编辑器中获得一些帮助-and-paste 文件格式之间的操作。请注意,这些不会以本机方式读取或写入 docx

Typora iaWriter Markdown Viewer 用于 Chrome。

程序等效项

对于程序等效项,您可能会通过调用不同的 pdf-engine 及其各自的选项来获得一些结果,但我尚未对此进行测试。 pandoc 默认为“pdflatex”。

pandoc --pdf-engine=
pandoc --pdf-engine-opt=STRING

更新:A4 与美国信函

对于美国以外的地区,设置 geometry 变量:

pandoc -s -V geometry:a4paper -o outfile.pdf infile.md

脚注

这里值得一提 - 在发现 Markdown 时并不明显的是,MultiMarkdown 是迄今为止功能最丰富的 Markdown 格式。

MultiMarkdown 支持元数据、目录、脚注、数学、表格和 YAML。

但 Github 的默认格式使用gfm,它也支持表格。我对 Github/GitLab 使用 gfm,对其他所有内容使用 MultiMarkdown

【讨论】:

查看 wordtomarkdown.com。 Windows 商店中有一个有用的应用程序。它比 Pandoc 做得更多,包括表格、图像和代码。【参考方案3】:

鉴于您在 *** 上提出了这个问题,您可能想要一个编程或命令行解决方案,我已经提供了另一个答案。

但是,另一种解决方案可能是将Writage Markdown plugin 用于Microsoft Word。

Writage 将 Word 变成您的 Markdown 所见即所得编辑器,因此您将能够打开 Markdown 文件并像在 Microsoft Word 中编辑任何文档一样对其进行编辑。也可以将您的 Word 文档保存为 Markdown 文件,而无需任何其他转换器。

在幕后,Writage 使用Pandoc,您还需要安装它才能使此插件正常工作。

目前支持以下 Markdown 元素:

标题 列表(编号和项目符号) 链接 粗体、斜体等字体样式 表格 脚注

这可能是许多最终用户的理想解决方案,因为他们不需要安装或运行任何命令行工具,而只需坚持使用他们最熟悉的工具。

【讨论】:

值得注意的是,Writage 仅适用于 Windows。我已经通过电子邮件向作者发送电子邮件询问有关 OS X 的问题。 另外值得注意的是,它是一个付费应用程序(至少在撰写本文时)。【参考方案4】:

Mammoth 以 Word 到 HTML 转换器而闻名,但它现在支持 Markdown writer 模块。当我上次检查时,Mammoth Markdown 支持仍处于早期阶段,因此您可能会发现某些功能不受支持。像往常一样...查看网站了解最新详情。

安装

要使用 javascript 版本...安装 NodeJS 然后安装 Mammoth:

npm install -g mammoth

命令行

命令行将 Word 文档转换为 Markdown ...

mammoth document.docx --output-format=markdown

API

NodeJS API 转换为 Markdown ...

var mammoth = require("mammoth");
mammoth.convertToMarkdown(path: "path/to/document.docx");

特点:

Mammoth Markdown 编写器目前支持:

列表(编号和项目符号) 链接 粗体、斜体等字体样式 图片

Mammoth 命令行工具和 API 已移植到多种语言

没有降价(2016 年 5 月):

.NET Java/JVM Wordpress

使用 Markdown:

Javascript Python

【讨论】:

mammoth document.docx --output-format=markdown > document.md 帮助我生成了一个转换后的文件,因为似乎仍然不支持直接这样做【参考方案5】:

您可以使用Word to Markdown (Ruby Gem) 一步转换它。转换可以很简单:

$ gem install word-to-markdown
$ w2m path/to/document.docx

它通过 LibreOffice 路由文档,但也最好根据它们的相对字体大小对标题进行语义化。

还有a hosted version,只需拖放即可转换。

【讨论】:

感谢分享托管版本;我喜欢这样而不是在我的计算机上安装二进制文件。【参考方案6】:

Word to Markdown 可能值得一试,或者通过 HTMLZ 使用 Calibre 和 Pandoc 描述的过程 here,这是他们使用的 bash 脚本:

#!/bin/bash
mkdir temp
cp $1 temp
cd temp
ebook-convert $1 output.htmlz
unzip output.htmlz
cd ..
pandoc -f html -t markdown -o output.md temp/index.html
rm -R temp

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 @EduardLuca 抱歉,您希望我实际发布源代码吗?哦,你的意思是后者,是的,我可以总结一下…… 仅链接答案背后的想法是,这些网站的内容可能会更改,或者将来可能会被删除,因此最好在您的答案中包含来自这些网站的任何相关信息,以便即使链接发生变化,它也会对未来的人们有所帮助。这些相关信息可以是代码,也可以是您链接到的网站内容的摘要。 @EduardLuca 我知道这一点(实际上我自己也标记/否决了许多仅链接的答案),尽管我希望链接到这些工具能够提供足够的起点。真的没有更多的信息传达...... 我认为您发布的代码很有帮助。我指的是networkcultures.org/digitalpublishing/2013/08/30/…,其中包含详细说明,但你发布了总结的 bash 很好:)【参考方案7】:

来自here:

unoconv -f html test.docx
pandoc -f html -t markdown -o test.md test.html

【讨论】:

【参考方案8】:

您可以使用此 Visual Basic 脚本将 Word 文档从 MS Word 中转换为 Markdown:

https://gist.github.com/hawkrives/2305254

按照“使用代码”下的说明在 Word 中创建新宏。

注意:这会将当前打开的 Word 文档转换为 Markdown,从而删除所有 Word 格式(标题、列表等)。首先保存您计划转换的 Word 文档,然后在运行宏之前再次将该文档另存为新文档。这样您就可以随时返回原始 Word 文档进行更改。

这里有更多 Word to markdown VB 脚本的示例:

https://www.mediawiki.org/wiki/Microsoft_Word_Macros

【讨论】:

【参考方案9】:

这是一个用 Ruby 构建的开源 Web 应用程序来执行此操作: https://word2md.com

【讨论】:

【参考方案10】:

如果您使用的是 Linux,请尝试 Pandoc(首先使用 LibreOffice 或其他工具将 .doc/.docx 转换为 html,然后运行它)。

在Windows上(或者如果Pandoc不起作用),你可以试试这个网站(在线演示,你可以下载它):Markdownify

【讨论】:

Markdownify 喷出“严格标准:”-PHP 消息,pandoc -f html -t markdown -s mydoc.html -o mydoc.md 导致纯文本/非重组文本(即与复制和粘贴到文本编辑器相同)。你对这两个有什么经验?【参考方案11】:

对于项目符号列表,您可以将列表粘贴到 Sublime Text 中并使用多选(已测试)或查找并替换(未测试)来替换专有的 MS Word 字符,例如 ---

这不适用于标题,但可以对其他元素使用类似的技术。

【讨论】:

【参考方案12】:

对于.doc Word 文件:

antiword -f some_file.doc

antiword的主页:http://www.winfield.demon.nl/

【讨论】:

以上是关于如何将 doc/docx 文件转换为 markdown 或结构化文本?的主要内容,如果未能解决你的问题,请参考以下文章

Java - 将 doc/docx 文件转换为 chm 文件

使用 shell_exec 将 doc、docx 文件转换为 pdf

使用 jodconverter 和 OpenOffice 将 doc/docx 转换为 pdf

将 HTML 转换为 odt、doc、docx

python 使用LibreOffice的命令行界面将PDF文件转换为与Microsoft Office Word兼容的doc / docx文件。

CEBX格式的文档如何转换为PDF格式文档DOCX文档?