使用Windows批处理命令行和ImageMagick批量将文件夹中的图片转换为PDF文档的方法

目录

应用场景

实现思路

实现过程

1.下载安装imageMagick

2.遍历源文件夹

3.转换图片为pdf文档

4.最终执行的命令

5.结果验证

6.将以上命令改写为windows批处理文件


应用场景

图像是一种常见的数据。图片几乎是一个信息系统中必不可少的组成部分。为了方便阅读,有时我们需要将分散在文件夹中的单个图片整合为一个个的PDF文档。如果文档较少,我们可以运用各类图形界面软件去一个个的生成PDF文档。在需要整合的PDF文档过多时,一个个的生成就不是很方便了。imageMagick是一个功能强大的命令行图像处理软件,可以实现常见的图像操作功能,转换图像格式就是其中之一,比较适合在服务器端使用。在对文档结构性要求不高的情况下,可以使用imageMagick命令行来完成图片转PDF的需求。
实现效果的文件结构预览

实现思路

实现思路也比较简单,使用批处理代码遍历源文件目录下所有的文件夹,将imageMagick命令将文件夹下所有文件转换为pdf,重复以上操作,直到所有文件夹中的图片都合成了PDF文档。

实现过程

1.下载安装imageMagick

本文主要说实现批量转换的方法,只简单提一下软件安装过程,访问imageMagick官网下载相应平台的程序ImageMagick -- Download,安装后配置好环境变量。本文讲的是windows的批处理实现,所以使用的也是windows版本的程序。在windows控制台(cmd)输入magick -version,控制台能输出版本信息,则说明软件安装ok。

2.遍历源文件夹

使用windows的for命令结合dir命令即可实现,遍历所有源文件夹(就是图片文件的父文件夹),以下命令实现了windows的for命令遍历当前目录的source文件夹下包含的所有子文件夹,并将每个文件夹的绝对路径打印到了屏幕。这条命令适合在cmd中使用。

bash 复制代码
for /f "delims=" %i in ('dir source\ /b /s /ad') do (echo %i)

3.转换图片为pdf文档

使用imageMagick命令行将当前目录下source目录下的book001文件夹中所有png图片按照系统默认排序合并为一个位于当前目录下dest目录下的以book001.pdf命名的pdf文档,可以用以下命令实现。(注:windows系统使用convert命令,需要用magick convert,这是为了和windows自带的convert命令区分开)

bash 复制代码
magick convert source\book001\*.png dest\book001.pdf

如果对图片文件在文档中的顺序有要求,可以将文件命名为形如001、002、003、004、005、006这样的图片,如下图所示,这样可以使图片在文档中按文件名顺序排列。

4.最终执行的命令

实际使用时还是需要使用下面的命令。以上步骤是对使用windows命令和imageMagick命令的解释,便于理解执行过程。该命令实现了将当前目录下的source文件夹中的所有文件夹中的图片转换为pdf文档,并使用文件夹的名称命名,输出到dest文件夹中。

bash 复制代码
for /f "delims=" %i in ('dir source\ /b /s /ad') do (magick convert %i\*.png dest\%~nxi.pdf)

5.结果验证

下图是生成的结果,可以看到dest文件夹中pdf文件逐个生成成功。

单个文档中,图片也是按照顺序排列的。

6.将以上命令改写为windows批处理文件

可以将以下代码保存为.bat文件,通过批处理程序来执行。用户从屏幕输入要读取的文件夹、要输出的文件夹,实现了图片批量转换为pdf。这里只是一个简单的实现,如果要用于更加复杂的场景还需要优化。

bash 复制代码
@echo off
set /p source="输入当前目录中源文件夹名称: "
set /p dest="输入当前目录中目标文件夹名称: "

for /f "delims=" %%i in ('dir %source% /b /s /ad') do (
    magick convert "%%i\*.png" "%dest%\%%~nxi.pdf"
)

pause
相关推荐
低保和光头哪个先来1 分钟前
TinyEditor 篇3:拖拽图片到编辑器并同步上传至服务器
运维·服务器·编辑器
rain_in_spring1 分钟前
十、项目:营销中心
linux·运维·服务器
csdn_life183 分钟前
# Debian 10 升级到 Debian 13 指南
运维·debian·php
U盘失踪了4 分钟前
Debian 使用 Xfce 桌面
linux·运维
k7Cx7e4 分钟前
Debian安装 curl 时提示插入 DVD 光盘
运维·windows·debian
云飞云共享云桌面5 分钟前
广东某智能装备工厂8人共享一台服务器
大数据·运维·服务器·人工智能·3d·自动化·电脑
鹓于5 分钟前
OmniParser视觉鼠标自动化实战
运维·自动化·计算机外设
北冥湖畔的燕雀5 分钟前
Linux Shell开发实战:从零打造命令行工具
linux·运维·服务器
!沧海@一粟!8 分钟前
Esxi主机iDrac密码与IP重置指南
运维·服务器
原来是猿10 分钟前
Linux - 基础IO【中】
linux·运维·服务器