使用Python将图片转pdf

使用Python将图片转pdf

    • 1. 效果图
    • 2. 源码
    • 参考

今天需要把图片转pdf,发现迅捷pdf转换开始默认带水印了,收费版那算了😂😂,那就用Python吧,可单转,可批量转。

参考: https://blog.csdn.net/qq_53706090/article/details/128261862

1. 效果图

发现可以成功转换:
在这里插入图片描述

2. 源码

# 照片转pdf# coding = UTF-8# 导入Python标准库
import os
from io import BytesIO# 导入第三方库
from PIL import Image# 防止中文乱码
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'# 支持的图片文件格式
SUPPORT_SUFFIX = ["jpg", "jpeg", "png"]def pic_to_pdf(image_bytes: bytes) -> bytes:"""将单个图片转换为单张PDF:param image_bytes: 图片的bytes对象:return: PDF的bytes对象"""# 将bytes对象转换为BytesIO对象image_bytes_io = BytesIO(image_bytes)# 从内存中读取图片image_object = Image.open(image_bytes_io)# 打开内存中的文件用于保存PDFwith BytesIO() as result_bytes_io:# 将图片保存为单张PDFimage_object.save(result_bytes_io, "PDF", resolution=100.0)# 获取内存中的文件data = result_bytes_io.getvalue()# 返回PDF的bytes对象return datadef batch_convert(image_path: str, pdf_path: str) -> None:"""批量将图片转换为单张PDF:param image_path: 图片的文件夹:param pdf_path: PDF文件保存的文件夹"""# 遍历文件夹下所有文件for root, dirs, files in os.walk(image_path, topdown=False):for name in files:# 提取文件的后缀名file_suffix = os.path.splitext(name)[-1].lstrip(".").lower()# 检测该文件格式是否受到支持if file_suffix not in SUPPORT_SUFFIX:continue# 拼接出图片文件的绝对路径source_file_path = os.path.join(root, name)# 拼接出PDF文件的绝对路径target_file_path = os.path.join(pdf_path, f"{os.path.splitext(name)[0]}.pdf")# 将图片文件转换为PDF文件with open(source_file_path, "rb") as source:with open(target_file_path, "wb") as target:target.write(pic_to_pdf(source.read()))# 照片转pdf
# image_path: 图片绝对路径
# pdf_path: pdf路径
def pic_convert(image_path, pdf_path):# 提取文件的后缀名file_suffix = os.path.splitext(image_path)[-1].lstrip(".").lower()# 检测该文件格式是否受到支持if file_suffix not in SUPPORT_SUFFIX:return# 将图片文件转换为PDF文件with open(image_path, "rb") as source:with open(pdf_path, "wb") as target:target.write(pic_to_pdf(source.read()))image_path = 'D:/study/dataset/val/daisy/cj.jpg'
pdf_path = os.path.splitext(image_path)[0].lstrip(".") + ".pdf"
pic_convert(image_path, pdf_path)

参考

  • https://blog.csdn.net/qq_53706090/article/details/128261862


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部