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 enabledelayedexpansionset "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 enabledelayedexpansionset "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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13615.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习技巧应用22-构建万能数据生成类的技巧,适用于CNN,RNN,GNN模型的调试与训练贯通

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用22-构建万能数据生成类的技巧,适用于CNN,RNN,GNN模型的调试与训练贯通。本文将实现了一个万能数据生成类的编写,并使用PyTorch框架训练CNN、RNN和GNN模型。 目录&#xff1…

Jupyter Notebook的内核添加新的虚拟环境

最近,在搭建环境的时候发现 Jupyter Notebook 的内核只有基础的python和pytorch,现在我想要在 Jupyter Notebook 中使用新的虚拟环境。 下面是解决的方法: (1)首先在Anaconda Prompt中激活虚拟环境,比如我…

LIN总线与RS485总线

LIN(Local Interconnect Network,局部互连网络)总线和RS485都是用于设备间通信的串行通信协议。下面我将分别列出它们的优势和劣势。 LIN总线的优势: 简单性:LIN总线的硬件和协议简单,易于实现和维护。成…

设计模式之装饰者模式-TS中装饰器介绍

装饰器的基本介绍 装饰器是一种特殊类型的声明,它能够被附加到类声明,方法,访问符,属性或参数上。 装饰器使用expression这种形式,expression求值后必须为一个函数,它会在运行时被调用,被装饰的…

SQL专家云回溯某时间段内的阻塞

背景 SQL专家云像“摄像头”一样,对环境、参数配置、服务器性能指标、活动会话、慢语句、磁盘空间、数据库文件、索引、作业、日志等几十个运行指标进行不同频率的实时采集,保存到SQL专家云自己的数据库中。因此可以随时对任何一个时间段进行回溯。 趋势…

vue项目打包并配置到iOS工程中

一、修改vue项目的配置文件 将config文件夹里面的index.js中的 assetsPublicPath的值修改为“./” Webpack.prod.conf.js 中output添加参数publicPath:./ 在webpack.base.conf.js里 publicPath: process.env.NODE_ENV 生产 ?./ config.build.assetsPublicPath :…

flutter聊天界面-Text富文本表情emoji、url、号码展示

flutter聊天界面-Text富文本表情emoji、url、号码展示 Text富文本表情emoji展示,主要通过实现Text.rich展示文本、emoji、自定义表情、URL等 一、Text及TextSpan Text用于显示简单样式文本 TextSpan它代表文本的一个“片段”,不同“片段”可按照不同的…

web-html的基本用法

web前端代码基本用法 <html> <head><meta charset"utf-8"><!-- charset 属性规定 HTML 文档的字符编码。要是没有规定字符编码的话是有可能乱码的 -->待到秋来九月八&#xff08;head&#xff09;<!-- 头部就是直接写在最上面的文字&…

尚无忧餐桌预订订桌包厢预订小程序源码

1.支持中餐、晚餐不同时间段桌位预定 2.支持包厢&#xff0c;大厅等不同区域预定 本系统后台tpvue 前端原生小程序 <!-- 导航栏 --> <!-- <van-nav-bar title"{{canteen}}" title-class"navbar" /> --> <van-nav-bar title"…

Spring Boot 中的服务发现

Spring Boot 中的服务发现 Spring Boot 是一个非常流行的 Java Web 开发框架&#xff0c;它提供了很多工具和组件来简化 Web 应用程序的开发。其中&#xff0c;服务发现是 Spring Boot 中的一个非常重要的组件&#xff0c;它可以帮助我们自动地发现和管理应用程序中的服务。 什…

树莓派(香橙派)交叉编译

目录 1、交叉编译是什么 2、为什么要交叉编译&#xff1f; 3、交叉编译需要用到什么工具&#xff1f; 4、&#xff08;香橙派&#xff09;交叉编译工具链的安装 5、 交叉编译服务端客户端 6、 带wiringPi库的交叉编译如何进行 1、交叉编译是什么 交叉编译是在一个平台上生…

盛最多水的容器(力扣)双指针 JAVA

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。 输入&…