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
    }
}
相关推荐
盼小辉丶24 分钟前
PyTorch生成式人工智能——使用MusicGen生成音乐
pytorch·python·深度学习·生成模型
HAPPY酷2 小时前
给纯小白的Python操作 PDF 笔记
开发语言·python·pdf
传奇开心果编程3 小时前
【传奇开心果系列】Flet框架实现的家庭记账本示例自定义模板
python·学习·ui·前端框架·自动化
王者鳜錸4 小时前
PYTHON让繁琐的工作自动化-PYTHON基础
python·microsoft·自动化
key_Go4 小时前
7.Ansible自动化之-实施任务控制
python·ansible·numpy
wyiyiyi12 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
mit6.82412 小时前
[1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络
人工智能·python
没有bug.的程序员12 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋13 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
AntBlack13 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt