下面我会详细讲解如何实现“Python自动化办公之图片转PDF”的功能。
1. 安装必要的Python库
在使用Python进行图片转PDF操作前,需要预先安装Pillow和reportlab两个库,可以使用pip命令进行安装。
pip install Pillow reportlab
2. 编写Python代码
- 导入必要的Python库
from PIL import Image
from reportlab.lib.pagesizes import A4, landscape
from reportlab.pdfgen import canvas
import os
- 定义图片转PDF函数
def img2pdf(img_path, pdf_path):
"""
将指定路径的图片转成PDF文件
:param img_path: 图片的路径
:param pdf_path: 要保存的PDF文件的路径
"""
# 创建空白PDF文件
c = canvas.Canvas(pdf_path, pagesize=landscape(A4))
# 打开指定路径的图片
img = Image.open(img_path)
# 计算以宽度为基准缩放的比例,并得出缩放后的高度
width, height = img.size
if width > A4[1]:
scale = A4[1] / width
img.thumbnail((width * scale, height * scale))
width, height = img.size
# 将图像绘制在PDF页面上
c.drawImage(img_path, (A4[1] - height) / 2, (A4[0] - width) / 2, width, height)
# 保存PDF文件
c.save()
其中:
- 使用Pillow库的Image.open函数打开指定路径的图片。
- 使用reportlab库的Canvas类创建一个新的PDF文件。
- 使用reportlab库的Canvas.drawImage函数将图片绘制在PDF页面上。
-
使用Canvas.save函数保存PDF文件。
-
使用示例1:图片转PDF
if __name__ == '__main__':
# 图片路径
img_path = 'test.jpg'
# PDF路径
pdf_path = 'test.pdf'
# 将图片转成PDF文件
img2pdf(img_path, pdf_path)
# 输出信息
print(f'{img_path} -> {pdf_path} 转换成功!')
- 使用示例2:批量图片批量转成PDF
if __name__ == '__main__':
# 图片文件夹路径
img_dir = r'C:\Users\XXX\Desktop\imgs'
# PDF文件夹路径
pdf_dir = r'C:\Users\XXX\Desktop\pdfs'
# 如果PDF文件夹不存在,则创建
if not os.path.exists(pdf_dir):
os.mkdir(pdf_dir)
# 遍历图片文件夹中所有的图片
for img_file in os.listdir(img_dir):
# 如果不是图片文件则跳过
if not img_file.endswith(('.png', '.jpg')):
continue
# 构造图片文件路径和PDF文件路径
img_path = os.path.join(img_dir, img_file)
pdf_path = os.path.join(pdf_dir, img_file.split('.')[0] + '.pdf')
# 将图片转成PDF文件
img2pdf(img_path, pdf_path)
# 输出信息
print(f'{img_path} -> {pdf_path} 转换成功!')
其中:
- 使用os模块的listdir函数遍历指定文件夹中所有的文件。
- 使用isdir函数判断文件是否是目录。
- 使用endswith函数判断文件名是否以指定的后缀名结尾。
- 使用join函数拼接文件路径。
- 使用split函数和os.path.splitext函数获取文件名和文件扩展名。
- 使用了os.mkdir函数创建PDF文件夹。
- 在每次转换完成后输出转换结果。
3. 运行Python代码
在编写好Python代码后,可以使用Python解释器来执行代码。可以在终端或命令行中执行Python脚本文件,也可以使用集成开发环境(如PyCharm)编辑和运行Python代码。
python img2pdf.py
注意:需要替换文件名和路径为自己的文件名和路径。
以上就是“Python自动化办公之图片转PDF”的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python自动化办公之图片转PDF的实现 - Python技术站