Windows系统中将markdown文件批量转化为PDF

需要将一个文件夹下的多个md文件转化为PDF

下载安装pandoc

官网下载地址:Pandoc ,下载位置如下图。
在这里插入图片描述
下载后按照默认文件路径安装完成
使用everything软件查找pandoc.exe文件路径,如下图:
在这里插入图片描述
安装完成之后就可以在cmd窗口或Windows power shell中使用pandoc指令了,例如:

pandoc test.md -o test.pdf #将test.md转化为test.pdf

通过bat脚本进行批量转化

编写bat脚本

bat脚本示例如下:

@echo off
setlocal enabledelayedexpansion

set "PANDOC_PATH=path\to\pandoc.exe"  //将"path\to\pandoc.exe"替换为你的Pandoc可执行文件的路径
set "INPUT_FOLDER=path\to\input\folder"  //将"path\to\input\folder"替换为你的Markdown文件所在的文件夹路径
set "OUTPUT_FOLDER=path\to\output\folder"  //将"path\to\output\folder"替换为你希望保存PDF文件的文件夹路径

for %%F in ("%INPUT_FOLDER%\*.md") do (
    set "INPUT_FILE=%%~F"
    set "OUTPUT_FILE=!OUTPUT_FOLDER!\%%~nF.pdf"
    "%PANDOC_PATH%" "!INPUT_FILE!" -o "!OUTPUT_FILE!"
)

echo Conversion completed.
pause

双击执行bat文件即可

报错

双击执行上面的bat文件会报错,报错信息如下:

Error producing PDF. ! Package inputenc Error: Unicode character 绗?
pandoc.exe: : hPutChar: permission denied (Permission denied)

解决

报错原因是markdown文件中有中文,为了支持中文,我们需要生成一个自己的tex模板。

将默认模板输出成template.tex。

pandoc -D latex > template.tex # -D: print-default-template

使用vscode打开生成的template.tex,在400多行的document之前加一行usepackage
在这里插入图片描述
ctex包能够提供中文支持。

然后,打开的template.tex在vscode右下角会显示其编码格式,点击,选择Save With Encoding,选择UTF-8。不更换编码格式的话会导致pandoc不能正确读取。

最后需要在pandoc中指定模板和中文友好的引擎--template=template.tex --pdf-engine=xelatex

最终bat版本

@echo off
setlocal enabledelayedexpansion

set "PANDOC_PATH=path\to\pandoc.exe"  //将"path\to\pandoc.exe"替换为你的Pandoc可执行文件的路径
set "INPUT_FOLDER=path\to\input\folder"  //将"path\to\input\folder"替换为你的Markdown文件所在的文件夹路径
set "OUTPUT_FOLDER=path\to\output\folder"  //将"path\to\output\folder"替换为你希望保存PDF文件的文件夹路径

for %%F in ("%INPUT_FOLDER%\*.md") do (
    set "INPUT_FILE=%%~F"
    set "OUTPUT_FILE=!OUTPUT_FOLDER!\%%~nF.pdf"
    "%PANDOC_PATH%" "!INPUT_FILE!" -o "!OUTPUT_FILE!" --template=template.tex --pdf-engine=xelatex
)

echo Conversion completed.
pause
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值