首页 > 其他分享 >pandoc + wkhtmltox 批量转换Markdown文件为PDF文件

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

时间:2025-01-17 18:32:20浏览次数:3  
标签:文件 Markdown md pandoc Pandoc jpg 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 是否安装成功:

pandoc --version

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

pandoc 3.6.2

2. wkhtmltopdf 的安装

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

   2.1 下载并安装 wkhtmltopdf

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

   2.3 验证安装:

wkhtmltopdf --version

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

3. 执行脚本

假设你的目录结构如下:

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

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

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文件保存到对应的目录下。


# 遍历所有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
    }
}

标签:文件,Markdown,md,pandoc,Pandoc,jpg,pdf
From: https://blog.csdn.net/rain097790/article/details/145212015

相关文章

  • 使用 pdf.js 通过文件流方式加载pdf文件
    关于Pdf.js的基础知识,请参考我的博客 使用pdf.js在网页中加载pdf文件使用pdf.js跨域问题的处理方法    上面两篇博客中介绍的内容都是基于直接加载远程服务器中静态PDF文件(即URL地址)来渲染PDF的,实际业务场景中,如与第三方系统对接过程中,第三方系统不直接公开......
  • UEFI 中的inf、dsc、FDF文件都是什么作用?DEC是什么
    在UEFI开发中,inf、dsc、FDF和DEC文件是EDKII构建系统的重要组成部分,各自有不同的作用。1.INF文件(ModuleInformationFile)作用:描述模块的构建信息,如源代码、依赖库、编译选项等。内容:包括模块类型、GUID、源文件、库依赖、PCD变量等。用途:用于定义单个模块的......
  • Linux操作命令之文件服务
    一、vsftpd服务vsftpd服务:c/sb/s 浏览器/服务器模式        软件包:                服务端:vsftpd-3.0.2-25.el7.x86_64.rpm                客户端:lftp-4.4.8-11.el7.x86_64.rpm        端口:        ......
  • C# winform 文件被占用的问题
    stringpath=@"C:1.xlsx";try{using(varstream=File.OpenRead(path)){//导入数据List<DataEntity>rows=stream.Query<DataEntity>().ToList();foreach(varsinrows){if(!s.Na......
  • 网站目录中的PHP脚本无法写入,导致缓存文件生成失败
    根据您的描述,您遇到了网站目录中的PHP脚本无法写入的问题,这直接影响了缓存文件的生成,进而导致网站运行不正常。具体来说,espcms_datacache/_templates 和 espcms_datacache/dbcache 目录下的PHP文件无法写入,这对网站性能和功能产生了负面影响。要解决这个问题,您可以按照以下步......
  • www目录文件不能解压 - 虚拟主机/数据库问题
    您好,当您遇到在www目录下无法解压文件的问题时,这可能是由多个因素共同作用的结果。以下是一些常见的原因及其对应的解决方案:压缩文件完整性:首先,请确保上传的压缩文件(如ZIP、RAR)本身没有损坏。可以在本地计算机上尝试解压该文件,以确认其是否可以正常打开。如果本地也无法解压,......
  • Mac传输文件神器ToDesk,支持安卓、Windows、IOS
    家里的电脑是苹果机,公司的电脑却是戴尔Windows系统,有时候需要互传一下文件但人却不在目标设备的身边,委托他人开机通过邮件代传又不便,QQ微信又不能在两台电脑设备上同时登,这种情况怎么办?当置于公司Mac中的文件紧急需要传输到手机、平板中或者其他设备中的内容需要传输到MacBook中时......
  • Linux 查看目录下的文件夹命令与 find 查找某个目录但不包括该目录本身
    在Linux系统中,管理和查找文件及文件夹是日常运维和开发过程中常见的任务。本文将介绍如何查看目录下的文件夹,并使用 find 命令查找特定目录下的内容,但排除该目录本身。我们将详细讨论以下内容:使用 ls 命令查看目录下的文件夹。使用 find 命令查找特定目录内容并排除该......
  • C++文件操作-随机存取&&缓冲区及流状态
    目录文件操作-随机存取1.fstream类2.文件的位置指针3.随机存取文件操作-缓冲区及流状态1.文件缓冲区2.流状态文件操作-随机存取1.fstream类fstream类既可以读文本/二进制文件,也可以写文本/二进制文件。fstream类的缺省模式是ios::in|ios::out,如果文件不存在,以只......
  • 常见OA系统配置文件
    瑞友天翼默认的安装目录是在C:\ProgramFiles(x86)\RealFriend\RapServer\WebRoot如果不在默认安装目录可以利用SQL注入通过sql-shell获取数据库的安装目录,从而推导出网站根目录。配置文件默认路径C:\ProgramFiles(x86)\RealFriend\RapServer\data\Config\CasDbCnn.dat......