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. 验证安装

打开命令提示符(cmd 或 PowerShell),运行以下命令验证 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
    }
}
相关推荐
belldeep1 小时前
python:genesis-world, Genesis-Embodied-AI
人工智能·python·ai·genesis
benchmark_cc2 小时前
A 股、港股、美股如何建立统一的标的主数据格式?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
维克兜率天3 小时前
【维克】趋势型CTA:期货市场的“追涨杀跌“
人工智能·python
取名真是4 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
梦想不只是梦与想4 小时前
PyTorch、CPU、GPU、CUDA
人工智能·pytorch·python·深度学习·机器学习·cuda
数字融合4 小时前
透明化视频孪生危化安全管控解决方案
人工智能·python·安全
别问!问就是全会5 小时前
Jupyter Notebook 安装包下载|单元格分块运行,图表直接内嵌
ide·python·其他·jupyter
深蓝AI6 小时前
Python 缓存击穿实测:16 个并发请求如何只回源 1 次
python
benchmark_cc6 小时前
用 00700.HK 做港股行情清洗:字段核对、校验与个人量化开发实践
python·数据分析·pandas·量化交易·股票数据·quantdash
zh路西法7 小时前
【PACE】面向永磁同步电机PMSM 执行器的参数辨识与能耗感知强化学习 Sim-to-Real
python·cma-es·pmsm·sim-to-real·issac·pace