本文所使用的环境为python3.8.5,所使用的模块包参考如下requirements.txt
pyinstaller==6.7.0pyinstaller-hooks-contrib==2024.6PyMuPDF==1.19.3tk==0.1.0
一键安装依赖脚本 pip install -r requirements.txt
1. 安装 pyinstaller
pip install pyinstaller
2. 写一个pdf转图片的脚本+
新建文件pdf.py。此处使用PyMuPDF模块进行文件转换,TkInter打开图形窗口选择文件,相关模块自行安装。
import datetime,os,timeimport fitz # pip install PyMuPDFimport tkinter as tk # pip install tkfrom tkinter import filedialogdef pyMuPDF_fitz(pdfPath, imagePath):startTime_pdf2img = datetime.datetime.now()file_name = os.path.basename(pdfPath).split('.')[0]if not os.path.exists(imagePath + '/' + file_name):os.mkdir(imagePath + '/' + file_name)pdfDoc = fitz.open(pdfPath)for pg in range(pdfDoc.pageCount):page = pdfDoc[pg]rotate = int(0)# 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2的图像。# 此处若是不做设置,默认图片大小为:792X612, dpi=96zoom_x = 2zoom_y = 2mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)pix = page.getPixmap(matrix=mat, alpha=False)if not os.path.exists(imagePath):os.makedirs(imagePath)print('图片' + str(pg+1) + ':' + str(pix.width) + 'x' + str(pix.height))pix.writeImage(imagePath + '/' + file_name + '/' + '%s.jpg' % (pg+1))endTime_pdf2img = datetime.datetime.now()print('处理完成,耗时=', (endTime_pdf2img - startTime_pdf2img).seconds)time.sleep(3)# pyinstaller -F --version-file=version.txt -i icon.ico com.pyif __name__ == "__main__":print('请先选择需要转换的pdf文件')root = tk.Tk()root.title('选择需要转换的文件')root.withdraw()pdfPath = filedialog.askopenfilename()print('选择文件:' + pdfPath)print('请选择需要保存的目录')root = tk.Tk()root.title('选择需要保存的目录')root.withdraw()imagePath = filedialog.askdirectory()print('保存目录:' + imagePath)pyMuPDF_fitz(pdfPath, imagePath)
3. 设置文件版本信息
新建一个文件version.txt,内容参考如下
# UTF-8VSVersionInfo(ffi=FixedFileInfo(#filevers和prodvers应该始终是包含四个项的元组:(1、2、3、4),将不需要的项设置为0filevers=(1, 0, 0, 0), # 文件版本******,鼠标悬浮exe会显示,也显示在 详细信息-文件版本,这个是检测版本的依据prodvers=(4, 6, 9, 4), # 生产商,未见显示在哪里mask=0x3f, # 两个位掩码flags=0x0,OS=0x4, # 为其设计此文件的操作系统,0x4-NT,无需更改它fileType=0x1, # 文件的常规类型,0x1-该文件是一个应用程序subtype=0x0, # 文件的功能,0x0表示该文件类型未定义date=(0, 0) # 创建日期和时间戳),kids=[StringFileInfo([StringTable(u'040904B0',[StringStruct(u'CompanyName', u'pdf转图片'), # 鼠标悬浮exe会显示StringStruct(u'FileDescription', u'先选择需要抓换的pdf文件,再选择保存目录'), # 文件说明,鼠标悬浮exe会显示,也会显示在 详细信息-文件说明StringStruct(u'FileVersion', u'1.1.0'), # 没见哪里显示StringStruct(u'InternalName', u'pdf转图片'),StringStruct(u'LegalCopyright', u'pdf转图片,测试软件禁止转载'), #版权,会显示在 详细信息-版权StringStruct(u'OriginalFilename', u'pdf转图片.exe'), #原始文件名,会显示在 详细信息-原始文件名StringStruct(u'ProductName', u'pdf转图片1.0'), #产品名称,会显示在 详细信息-产品名称StringStruct(u'ProductVersion', u'1.0.0.0')]) #产品版本,会显示在 详细信息-产品版本]),VarFileInfo([VarStruct(u'Translation', [2052, 1200])]) # 语言,中文简体])
4. 使用 pyinstaller 打包脚本为exe
pyinstaller其他更多参数可以自行探索。
# 软件版本信息使用`version.txt`# 软件图标为`icon.ico`# 打包脚本`pdf.py`pyinstaller -F --version-file=version.txt -i icon.ico pdf.py
命令执行提示completed successfully就是成功了,会在当前目录下生成build dist 两个目录,dist里面的pdf.exe就是我们打包成功的文件了。

接下来就可以使用一下我们刚刚打包的软件了
双击pdf.exe,选择pdf文件,再选择保存的目录,接下来就可以看到pdf文件被成功转换为图片了。

