python 下将图片合成PDF

配置

window 10系统
python3.6版本

说明:

之前做些测试,将本地的一些图片合并成功pdf,然后搜到的一些博客都是用PIL,而且博客都是一俩年前的了,找了几个都没用弄成,今天突然又看到这几张突然,然后就再次搜索测试,最终经过不懈努力找到一个好的模块:img2pdf

方法一:img2pdf

1、安装img2pdf

pip3 install img2pdf

2、直接上代码

如过你也是window系统,可以直接修改一些photo_path图片的绝对路径就能用了,生成的pdf就在图片目录里面,其系统自行修改相关不同代码吧。(记得目录里面要都是图片,我没有进行图片判断)

import img2pdf
import  os


def from_photo_to_pdf(photo_path):
    # 1、生成地址列表
    photo_list = os.listdir(photo_path)
    photo_list = [os.path.join(photo_path,i) for i in photo_list]

    # 1、指定pdf的单页的宽和高
    # A4纸张
    # a4inpt = (img2pdf.mm_to_pt(210), img2pdf.mm_to_pt(297))
    # 我的自定义:
    a4inpt = (img2pdf.mm_to_pt(720), img2pdf.mm_to_pt(1080))
    layout_fun = img2pdf.get_layout_fun(a4inpt)
    with open(photo_path+'\\1result.pdf', 'wb') as f:
        f.write(img2pdf.convert(photo_list, layout_fun=layout_fun))


if __name__ == '__main__':
    photo_path = r'图片目录的绝对地址'
    from_photo_to_pdf(photo_path)

3、生成的效果图:

在这里插入图片描述
在这里插入图片描述

方法二(新增PyMuPDF)

1、安装PyMuPDF

模块地址:

pip install PyMuPDF

2、合成PDF代码:

import glob
import os

import fitz  # pip install PyMuPDF


def pic2pdf(img_dir):
    doc = fitz.open()
    for img in sorted(glob.glob("{}/*".format(img_dir))):  # 读取图片,确保按文件名排序
        print(img)
        imgdoc = fitz.open(img)  # 打开图片
        pdfbytes = imgdoc.convertToPDF()  # 使用图片创建单页的 PDF
        imgpdf = fitz.open("pdf", pdfbytes)
        doc.insertPDF(imgpdf)  # 将当前页插入文档
    if os.path.exists("allimages.pdf"):
        os.remove("allimages.pdf")
    doc.save("allimages.pdf")  # 保存pdf文件
    doc.close()


if __name__ == '__main__':
    img_dir = "imgs"
    pic2pdf(img_dir)

只需要更改img_dir 换成你需要合成的图片目录,尽量绝对路径。

参考:
https://pypi.org/project/img2pdf/
https://blog.csdn.net/cloveses/article/details/79142533

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhaojiafu666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值