pandoc + wkhtmltox 批量转换Markdown文件为PDF文件

1. Pandoc的安装

  1. 下载并安装

1.1 解压文件

pandoc-3.6.2-windows-x86_64.zip 解压到一个目录,例如:

复制

复制代码
C:\pandoc

解压后的文件夹中应包含以下文件:

  • pandoc.exe(主程序)

  • 其他相关文件(如文档和依赖项)。


1.2. 将 Pandoc 添加到系统环境变量

为了在命令行中直接使用 pandoc 命令,你需要将 Pandoc 的路径添加到系统的 PATH 环境变量中。

步骤如下:

  1. 右键点击"此电脑"或"我的电脑",选择"属性"。

  2. 点击"高级系统设置"。

  3. 在"系统属性"窗口中,点击"环境变量"。

  4. 在"系统变量"部分,找到 Path 变量,点击"编辑"。

  5. 点击"新建",然后输入 Pandoc 的路径(例如 C:\pandoc)。

  6. 点击"确定"保存更改。


1.3. 验证安装

打开命令提示符(cmdPowerShell),运行以下命令验证 Pandoc 是否安装成功:

bash 复制代码
pandoc --version

如果安装成功,你会看到 Pandoc 的版本信息,例如:

复制代码
pandoc 3.6.2

2. wkhtmltopdf 的安装

确保 wkhtmltopdf 已正确安装并添加到系统的 PATH 环境变量中。

2.1 下载并安装 wkhtmltopdf

2.2 将 wkhtmltopdf 的路径添加到系统的 PATH 环境变量中。

2.3 验证安装:

bash 复制代码
wkhtmltopdf --version

如果安装成功,你会看到版本信息。

3. 执行脚本

假设你的目录结构如下:

bash 复制代码
C:\projects\
├── notes\
   ├── note1.md
   ├── note2.md
   ├── images\
      ├── example1.jpg
      ├── example2.jpg
   └── subdir\
      ├── note3.md
      ├── note4.md
      └── images\
         ├── example3.jpg
         ├── example4.jpg

运行脚本后,生成的 PDF 文件会与对应的 Markdown 文件位于同一目录:

bash 复制代码
C:\projects\
├── notes\
   ├── note1.md
   ├── note1.pdf
   ├── note2.md
   ├── note2.pdf
   ├── images\
      ├── example1.jpg
      ├── example2.jpg
   └── subdir\
      ├── note3.md
      ├── note3.pdf
      ├── note4.md
      ├── note4.pdf
      └── images\
         ├── example3.jpg
         ├── example4.jpg

PowerShell 脚本代码,主要用于将指定目录下的所有.md(Markdown)文件转换为.pdf文件,并将转换后的.pdf文件保存到对应的目录下。

bash 复制代码
# 遍历所有md文件,将每个md文件转换为pdf,并保存到对应的目录下
Get-ChildItem -Recurse -Filter *.md | ForEach-Object {
    $title = $_.BaseName  # 获取文件名(不含扩展名)
    $outputDir = $_.DirectoryName  # 获取文件所在目录
    $outputFile = Join-Path $outputDir "$title.pdf"  # 输出文件路径
    
    # 切换到当前md文件所在目录
    Push-Location $_.DirectoryName
    
    try {
        # 使用相对于当前目录的文件名进行转换
        $relativeInputFile = $_.Name
        
        # 调用 pandoc 进行转换
        pandoc $relativeInputFile -o $outputFile `
            --pdf-engine=wkhtmltopdf `
            --pdf-engine-opt=--enable-local-file-access `
            --metadata title="$title"
            
        Write-Host "成功转换: $($_.FullName) -> $outputFile"
    }
    finally {
        # 恢复原来的工作目录
        Pop-Location
    }
}
相关推荐
hhh3u3u3u1 小时前
Visual C++ 6.0中文版安装包下载教程及win11安装教程
java·c语言·开发语言·c++·python·c#·vc-1
好家伙VCC2 小时前
**发散创新:基于Python与ROS的机器人运动控制实战解析**在现代机器人系统开发中,**运动控制**是实现智能行为的核心
java·开发语言·python·机器人
2401_827499992 小时前
python项目实战09-AI智能伴侣(ai_partner_2-3)
开发语言·python
派葛穆2 小时前
汇川PLC-Python与汇川easy521plc进行Modbustcp通讯
开发语言·python
代码小书生2 小时前
Matplotlib,Python 数据可视化核心库!
python·信息可视化·matplotlib
默 语3 小时前
Records、Sealed Classes这些新特性:Java真的变简单了吗?
java·开发语言·python
架构师老Y3 小时前
013、数据库性能优化:索引、查询与连接池
数据库·python·oracle·性能优化·架构
Kel3 小时前
PydanticAI 源码深潜:类型安全依赖注入与图执行引擎的双核架构解析
人工智能·python·架构
卷心菜狗3 小时前
Python进阶-深浅拷贝辨析
开发语言·python
Thomas.Sir3 小时前
重构诊疗效率与精准度之【AI 赋能临床诊断与辅助决策从理论到实战】
人工智能·python·ai·医疗·诊断