如何将 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
导出markdown 表(pandoc 中的“pipe_tables”),请使用multimarkdown
或gfm
输出格式。
如果格式化为 PDF,pandoc
会为此使用 LaTeX
模板,因此如果该命令无法开箱即用,您可能需要为您的操作系统安装 LaTeX
包。说明LaTeX Installation
哪些所见即所得的编辑器?
对于docx
,使用Writeage。
维护高级字体
如果您希望保留 unicode 字符、emojis 并保持优质字体,则在使用 copy 时,您将从下面的编辑器中获得一些帮助-and-paste 文件格式之间的操作。请注意,这些不会以本机方式读取或写入 docx
。
程序等效项
对于程序等效项,您可能会通过调用不同的 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
python 使用LibreOffice的命令行界面将PDF文件转换为与Microsoft Office Word兼容的doc / docx文件。