Pandoc将docx转换为带嵌入图像的markdown。

69
当将.docx文件转换为markdown时,嵌入式图像未从docx存档中提取,但输出包含![](media/image1.png){width="6.291666666666667in" height="3.1083333333333334in"}。是否需要设置参数才能提取嵌入式图片?
3个回答

122
pandoc --extract-media ./myMediaFolder input.docx -o output.md

手册中得知:

--extract-media=DIR选项可将源文档中包含或链接的图像和其他媒体提取到路径DIR中,如果需要则创建该路径,并调整文档中的图像引用,使其指向提取的文件。需要时,媒体将被下载、从文件系统中读取或从二进制容器(例如docx)中提取。如果原始文件路径是不包含“..”的相对路径,则使用原始文件路径。否则,文件名将从内容的SHA1哈希构造而成。


9
谢谢您的回答,它对我有帮助。我注意到在Pandoc 2.2.1中, --extract-media=选项会在指定路径下创建一个名为media的子文件夹。如果您使用--extract-media=./media,则导出的图像将会存储在./media/media文件夹中。 - gridtrak
7
这是因为媒体文件实际上存储在名为“media”的文件夹内,该文件夹位于docx文件内部。 https://github.com/jgm/pandoc/issues/1986 - Viktor
有没有一种方法可以按照输入文件中呈现的顺序提取?我的意思是,我希望提取的媒体具有根据它们在输入文件中呈现的顺序的连续文件名。 - Adolfo Correa

26

参考gridtrak的评论和太多层目录结构的问题(例如media/media/image2.jpeg),使用当前目录作为路径DIR,然后在当前目录中创建一个名为media的文件夹(例如media/image2.jpeg):

pandoc --extract-media=. input.docx -o output.md

在Mac上,media/被称为Pictures/在pandoc 2.2.3.2中。 - hobs
1
希望能够提供重命名子文件夹或者将层次结构展平的选项。此外,还希望提供一种在图像名称前缀中添加某种模式的选项,以避免在同一文件夹中转换多个Word文档时出现名称冲突。 - Paul Rougieux
1
我在 pandoc GitHub 存储库问题(https://github.com/jgm/pandoc/issues/1986)的讨论中找到了答案。临时解决方案是使用 mv 手动更改文件夹名称,例如 pandoc my.docx --extract-media=DIR && mv DIR/media DIR/img - Jiaxiang

-1

你可以尝试使用 "--embed-resources"。
https://pandoc.org/MANUAL.html#option--embed-resources[

--embed-resources[=true|false] 使用data: URIs将链接的脚本、样式表、图片和视频内容合并到一个独立的HTML文件中,不依赖外部资源。生成的文件应该是“自包含”的,即在浏览器中正确显示时不需要外部文件和网络访问。此选项仅适用于HTML输出格式,包括html4、html5、html+lhs、html5+lhs、s5、slidy、slideous、dzslides和revealjs。绝对URL的脚本、图片和样式表将被下载;相对URL的脚本、图片和样式表将相对于工作目录(如果第一个源文件是本地文件)或相对于基本URL(如果第一个源文件是远程文件)进行查找。具有属性data-external="1"的元素将保持不变;它们链接到的文档将不会被合并到文档中。限制:通过JavaScript动态加载的资源无法合并;因此,在使用--mathjax时可能会缺少字体,并且一些高级功能(例如缩放或演讲者备注)在离线“自包含”reveal.js幻灯片演示中可能无法正常工作。

1
此选项仅适用于HTML输出格式。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接