python实现jpg、png等图片格式转为PDF

import glob
import os
import fitz


def img2pdf_all2all(img_path,img_type,pdf_path):
    """
    文件夹中指定img类型图片转换为相同名称的PDF文件,保存至指定文件夹
    :param img_path: 输入图片文件夹路径
    :param img_type: 图片类型,如jpg、png等
    :param pdf_path: 指定PDF输出路径
    :return:
    """
    for img in sorted(glob.glob(img_path+"\*.%s" % img_type)):
        # 先修改好文件名
        # os.path.basename  返回path最后的文件名。如果path以 / 或 \ 结尾,就会返回空值
        filename = os.path.basename(img).replace(img_type, 'pdf')
        doc = fitz.open()

        imgdoc = fitz.open(img)
        pdfbytes = imgdoc.convert_to_pdf()
        imgpdf = fitz.open('pdf', pdfbytes)
        doc.insert_pdf(imgpdf)
        doc.save(pdf_path+'\\'+filename)

        doc.close


def img2pdf_all2one(img_path,img_type,pdf_path,pdf_name):
    """
    文件夹中指定img类型图片转换为一个指定名称的PDF文件,保存至指定文件夹
    :param img_path: 输入图片文件夹路径
    :param img_type: 图片类型,如jpg、png等
    :param pdf_path: 指定PDF输出路径
    :param pdf_name: 指定PDF输出文件名
    :return:
    """
    doc = fitz.open()

    for img in sorted(glob.glob(img_path+'\*.%s' % img_type)):
        imgdoc = fitz.open(img)
        pdfbytes = imgdoc.convert_to_pdf()
        imgpdf = fitz.open('pdf', pdfbytes)
        doc.insert_pdf(imgpdf)

    doc.save(pdf_path+pdf_name)
    doc.close


if __name__ == '__main__':
    # 图片文件夹路径
    img_path = "../../datas/img_input/"
    # 图片输出文件夹路径
    pdf_path = "../../datas/img_output/"

    pdf_name = "1.pdf"


    # 指定png格式转换对应 同名的PDF文件
    img2pdf_all2all(img_path,'png',pdf_path)

    # 指定png格式图片 转换为 1个指定的PDF文件
    img2pdf_all2one(img_path,'png',pdf_path,'allpng.pdf')

注意:

1、python解释器的版本要求是3.6以及之后的版本。因为pymupdf要求

2、fitz包必须是先从pymupdf库中的,所以需要先确定环境中没有同名的fitz包,删除后,然后下载pymupdf

pip install --upgrade pip

pip install --upgrade pymupdf

运行,实现的效果如下:

 

最后,如果你还有任何问题,可以随时评论/私信,如果SHOKO 看到后,会答复哈~

附录:pymupdf源码

GitHub - pymupdf/PyMuPDF: Python bindings for MuPDF's rendering library.

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值