目录
方法一、在obsidian中安装Pandoc插件(需要加速)
需求
Pandoc是一个由 John MacFarane 开发的通用文档转换工具,可以支持大量标记语言之间的格式转换,例如 Markdown、MicrosoftWord、PowerPoint、 Jupyter9 NotebooK、HTML、PDF、LaTeX、Wiki、EPUB 格式之间的相互转换。
obsidian是基于Markdown文件的本地知识管理软件,并且开发者承诺Obsidian对于个人使用者永久免费。obsidian有强大的插件生态。
Markdown很方便,但是有时候想要将Markdown转换成可编辑的Word文件。
为了实现将.md格式文件转成.docx格式文件,这里采取的方法是:安装Pandoc,并在obsidian中安装Pandoc插件实现将.md格式转换成.docx格式。(如果是转成pdf的话,Ctrl + P就能找到转pdf的功能了)
注:.docx
是较新的Word文档格式,Pandoc直接输出的是.docx
格式,而不是旧的.doc
格式,因为.docx
是基于Open XML标准的,更易于机器处理和转换。
安装Pandoc
安装Pandoc,官网好像挺慢的,没有加速的话,可以直接跳到方法二,通过链接下载。
下载
这里提供两种方法下载:
- 方法一:官网下载
- 方法二:链接下载
官网如果没有加速的话,似乎是比较慢的,可以直接跳到方法二进行下载。
方法一:官网下载
Pandoc官网:
Pandoc - 索引 --- Pandoc - indexhttps://pandoc.org/
(1)点击installing
(2)点击安装:
(3)选择合适版本:我这里选择的如下版本(看你电脑什么版本):
(4)选择一个合适的路径,并解压
解压后有如下文件
(5)请转到配置环境变量
方法二:这里链接下载
链接:https://pan.baidu.com/s/1nzy_QCuu-1YPWpvS7vCmqg?pwd=1i2a
提取码:1i2a
链接包含:pandoc-3.2-windows-x86_64(pandoc.exe可执行文件)和pandoc_plugin(pandoc插件)
下载后,解压到合适目录,pandoc-3.2-windows-x86_64文件内容如下:
配置环境变量
已经下载了pandoc,接下来只需要将pandoc的路径添加到环境变量中:
(1)在Windows下搜索框:
搜索编辑系统环境变量(或者控制面板):
(2)点击环境变量
(3)找到系统变量下方的path,点击“编辑”:
(4)添加:
点击新建,我的pandoc.exe路径是D:\software\pandoc\pandoc-3.2-windows-x86_64\pandoc-3.2\pandoc.exe,所以新建后添加的是D:\software\pandoc\pandoc-3.2-windows-x86_64\pandoc-3.2(注意:是pandoc.exe所在的目录)
(5)之后点击一路点击确定,完成配置。
检查有无配置成功
Win+R打开cmd
输入:“pandoc --version”如下则配置成功:
如果不能识别pandoc命令,则说明配置的路径有问题。
使用Pandoc命令输出docx文件(命令行模式)
这里演示的是在命令行中将.md格式转换成.docx格式。不喜欢的就直接跳到插件模式。
注:关于doc与.docx
.docx
是较新的Word文档格式,Pandoc直接输出的是.docx
格式,而不是旧的.doc
格式,因为.docx
是基于Open XML标准的,更易于机器处理和转换。
简单语法
要将Markdown文件(或其他Pandoc支持的格式)转换为.docx
格式,以下是语法格式:
pandoc yourfile.md -o output.docx
演示
双击pandoc.exe后发现是个小黑框(我也没查怎么用)。既然之前已经配置了环境变量,就能在cmd中使用pandoc命令,所以之后的演示都是在cmd中运行
(1)Win + R输入cmd并回车
(2)切换到你要操作的目录,例如
cd/d D:\BaiduNetdiskWorkspace\warehouse\language\MarkDown
(3)参照语法
pandoc yourfile.md -o yuan_outfile.docx
例如我要将MarkDown.md转换成MarkDown.docx,只需要使用以下命令:
pandoc MarkDown.md -o MarkDown.docx
当然,文件名是可以自己取的,不过如果是取" yuan outfile "这样文件名中有空格的名记得加上双引号。
(4)生成了docx格式文件,打开看看,以下是其中一点内容的截屏
图片成功嵌入到了word中,至于格式包括字体等内容就跟word的配置有关了。
每个人可能需求不一样,请对自己比较在意的格式进行检查。
安装Pandoc插件
在obsidian中安装pandoc插件,如果没有加速,介意直接跳到方法三用链接下载。
这里提供三种下载方法:
- 在obsidian插件社区安装
- 在GitHub上安装
- 链接下载
提供三种方法是因为如果你之前已经通过某个方法下载了pandoc插件,能够给你提供一个对照。如果没有可以直接方法三。
安装
方法一、在obsidian中安装Pandoc插件(需要加速)
(1)打开obsidian中的插件社区
(2)搜索Pandoc插件
(3)点击安装
(4)点击启用
当前仓库的.obsidian配置文件下的plugins插件通常用保存插件文件,安装成功后会在文件夹下生成obsidian-pandoc文件夹,obsidian-pandoc下会生成三个文件,如下(这个看不看无所谓):
(5)请转到配置Pandoc path
方法二、在GitHub上下载Pandoc(需要加速)
Pandoc插件下载地址(这里是插件,上面是.exe可执行程序
(1)点击上面的网页后,选择下载下面圈中的三个文件:main.js,mainfest.js
(2)找到你仓库下的.obsidian配置文件,例如:你的仓库路径是:D:\path\vault,那就需要找到D:\path\vault\.obsidian
(3)点击plugins,这是保存obsidian插件的地方,
(4)在plugins文件下创建一个obsidian-pandoc文件夹
(5)将刚刚下载的三个文件移动到obsidian-pandoc文件下,如下:
(6)重启obsidian,并选择信任插件,且在设置中启用插件
方法三:链接下载
这里的链接跟上方一样的
链接:https://pan.baidu.com/s/1nzy_QCuu-1YPWpvS7vCmqg?pwd=1i2a
提取码:1i2a
(1)解压后在pandoc_plugin文件中查找到以下三个文件(之后就是将这三个文件放到.obsidian合适的位置中):
(2)找到你仓库下的.obsidian配置文件,例如:你的仓库路径是:D:\path\vault,那就需要找到D:\path\vault\.obsidian
(3)点击plugins,这是保存obsidian插件的地方(如果没有plugins文件夹,就建立一个文件夹,obsidian就识别.obsidian/plugins下的插件)
(4)在plugins文件下创建一个obsidian-pandoc文件夹
(5)将刚刚下载的三个文件移动到obsidian-pandoc文件下,如下:
(6)重启obsidian,并选择信任插件,且在设置中启用插件(默认第三方插件开启安全模式,请关闭安全模式)
注:如果你的第三方插件中显示“你目前已经安装了0个插件”说明你的插件路径未被识别
- 文件位置在plugins的obsidian-pandoc下,比如我是D:\Projects\.obsidian\plugins\obsidian-pandoc
- 在点击开启Pandoc Plugin后,左边栏目会显示插件
配置Pandoc path
(1)打开Pandoc的设置
(2)给定pandoc.exe的路径
这里指定的是“D:\software\pandoc\pandoc-3.2-windows-x86_64\pandoc-3.2\pandoc.exe”
配置输出路径(建议配置)
如果为输出路径配置,以后pandoc导出的文件都会默认保存在该文件夹下,不配置也可,会默认保存在源文件的旁边。(这里当时是建议配的)
实现:
打开obsidian的设置,在Pandoc Plugin设置的Export folder配置添加你想指定的输出路径,比如我这里添加的是D:\workspace\obsidian_out
那么之后pandoc在导出文件的时候,会默认将文件输出到D:\workspace\obsidian_out文件夹下
配置总结
使用
先看操作和成果
操作:
Ctrl + P调出以下弹框,并搜索pandoc的功能,不过基本上打个p就能弹出来了(Ctrl + P还能调出obsidian将笔记转成pdf的功能)
成功在docx文件中嵌入图片。
不过,这里只力求将图片嵌入,超链接和代码等格式没有细究。
其他配置
我尝试了NNN次,改变了一些配置,不确定哪些配置必要,但是新建了一个仓库,验证了以下配置可行
(1)我的图片指定保存在仓库根目录下的images中,这个名字取你喜欢的就行:
(2)在obsidian的设置中,点击“文件与链接”:
- 更改内部链接类型为”基于当前笔记的相对路径“
- 关闭”Wiki链接“
- 更改默认附近文件夹路径为”指定的附件文件夹“,且填入(1)步骤的文件夹名,我是“images”
(3)同样在obsidian的设置中,下拉到Pandoc Plugin:
- 更改"Export files from HTML or markdown"为"Markdown"
- 更改”Export folder",这里可配可不配,如果配置之后,则默认会将生成的文件输出到这里,不配置就输出到要转换的文件旁边
- 更改"Pandoc path",这里填pandoc.exe的安装路径,比如我填的"D:\workspace\obsidian-out"
- 更改"Extra Pandoc arguments"为以下格式
--resource-path=你的图片路径的绝对地址
比如我是
--resource-path=D:/BaiduNetdiskWorkspace/warehouse/language/images
(4)观察输出结果:
成功输出。
基本配置已完毕,在你的obsidian中尝试吧
以上配置依旧失败,可能是因为之前已经生成的图片链接没有更新,但之后再粘贴图片会以能识别的形式存在
附:一些问题
如果完成以上配置且成功输出.docx文件不用看下面的问题
由于插件导致的图片路径问题
目的是:将D:\BaiduNetdiskWorkspace\warehouse\science\MySQL\crash course下的Crash course.md转成docx格式的
使用命令(这里是在cmd环境下运行):
pandoc "Crash course.md" -o "Crash course.docx"
(这里有双引号是因为文件名字中有空格)
发现,成功出现Crash course.docx文件
打开Crash course.docx后发现文字和一些基础格式导出基本没有问题,但是出现其他文本:
猜测,应该是因为我启用了一些管理图片的插件,会有额外的文本(例如下面图片的Open:Pasted image 20240518154825),所以导出失败
那什么路径基本能成功导出呢?
关于图片路径
根据这一文章:
关于正确识别本地图片https://forum-zh.obsidian.md/t/topic/1930
其中作者测试总结了一些能正确识别本地图片路径的引用格式:
插件设置的源格式 | md文档中的图片格式 | 导出结果 |
---|---|---|
html | ![[附件/202111241058704.png]] | 成功 |
html | ![[202111241058704.png]] | 失败 |
markdown |  | 直接导出失败 添加参数 --resource-path="E:\Obsidian文档库\" 成功 |
markdown | ![[附件/202111241058704.png]] | 导出成功,但wiki格式图片不识别 |
markdown |  | 直接导出失败 添加参数 --resource-path="E:\Obsidian文档库\附件\" 成功 |
markdown |  | 失败,删除file:/// 协议,导出成功 |
其中关于插件设置的源格式html和markdown,应该如下图一般修改:
看你选择要转换的源文件的格式。
这些图片路径我没有都测试,不过想要尝试更多可能的主要思路是让Pandoc能识别图片引用路径。
Pandoc未安装问题
报错:Pandoc is not installed or accessible on your PATH. This plugin's functionality will be limited.
是因为Pandoc未安装或者没有配置到Pandoc path中
Pandoc插件需要获取到Pandoc.exe的安装位置才能导出.docx文件,所以需要在其中加入Pandoc.exe的存放路径
比如我这里填入的路径是:
D:\software\pandoc\pandoc-3.2-windows-x86_64\pandoc-3.2\pandoc.exe
将docx转换为md格式
已经安装过了Pandoc,想要进行格式转换就直接用Pandoc就行了。
例如,想要将docx转换为md格式使用下面的命令格式(如果配置了环境遍历,在cmd中就可以执行):
pandoc --extract-media=/path/to/store/images path/input.docx -o path/output.md
关于参数:
1、/path/to/store/images —— 你想要保存图片的路径(pandoc会在你选择的路径下创建一个子文件夹“media”,只要你选择合适的位置就行,建议在输入命令的时候就决定好你要保存的文件夹)
2、path/input.docx —— 你要操作的docx文件夹的路径
3、-o —— output,系统参数,照抄
4、path/output.md —— 输出md文件的位置
举例:
pandoc --extract-media=D:\test D:\input.docx -o D:\output.md