Python3将jpg转为pdf文件的方法示例


Posted in Python onDecember 13, 2019

本文实例讲述了Python3将jpg转为pdf文件的方法。分享给大家供大家参考,具体如下:

#coding=utf-8
#!/usr/bin/env python
"""
convert image to pdf file
"""
#Author: mrbeann 
import os
import sys
import glob
import platform
from reportlab.lib.pagesizes import letter, A4, landscape
from reportlab.platypus import SimpleDocTemplate, Image
from reportlab.lib.units import inch
from reportlab.pdfgen import canvas
from reportlab import rl_settings
from PIL import Image
import importlib,sys
#importlib.reload(sys)
#sys.setdefaultencoding("utf-8")
def topdf(path,recursion=None,pictureType=None,sizeMode=None,width=None,height=None,fit=None,save=None):
  """
  Parameters
  ----------
  path : string
      path of the pictures
  recursion : boolean
        None or False for no recursion
        True for recursion to children folder
        wether to recursion or not
  pictureType : list
         type of pictures,for example :jpg,png...
  sizeMode : int
      None or 0 for pdf's pagesize is the biggest of all the pictures
      1 for pdf's pagesize is the min of all the pictures
      2 for pdf's pagesize is the given value of width and height
      to choose how to determine the size of pdf
  width : int
      width of the pdf page
  height : int
      height of the pdf page
  fit : boolean
      None or False for fit the picture size to pagesize
      True for keep the size of the pictures
      wether to keep the picture size or not
  save : string
      path to save the pdf
  """
  if platform.system() == 'Windows':
    path = path.replace('\\','/')
  if path[-1] != '/':
    path = (path + '/')
  if recursion == True:
    for i in os.listdir(path):
      if os.path.isdir(os.path.abspath(os.path.join(path, i))):
        topdf(path+i,recursion,pictureType,sizeMode,width,height,fit,save)
  filelist = []
  if pictureType == None:
    filelist = glob.glob(os.path.join(path, '*.jpg'))
  else:
    for i in pictureType:
      filelist.extend(glob.glob(os.path.join(path, '*.'+i)))
  maxw = 0
  maxh = 0
  if sizeMode == None or sizeMode == 0:
    for i in filelist:
      im = Image.open(i)
      if maxw < im.size[0]:
        maxw = im.size[0]
      if maxh < im.size[1]:
        maxh = im.size[1]
  elif sizeMode == 1:
    maxw = 999999
    maxh = 999999
    for i in filelist:
      im = Image.open(i)
      if maxw > im.size[0]:
        maxw = im.size[0]
      if maxh > im.size[1]:
        maxh = im.size[1]
  else:
    if width == None or height == None:
      raise Exception("no width or height provid")
    maxw = width
    maxh = height
  maxsize = (maxw,maxh)
  if save == None:
    filename_pdf = path + path.split('/')[-2]
  else:
    filename_pdf = save + path.split('/')[-2]
  filename_pdf = filename_pdf + '.pdf'
  c = canvas.Canvas(filename_pdf, pagesize=maxsize )
  l = len(filelist)
  for i in range(l):
    (w, h) =maxsize
    width, height = letter
    if fit == True:
      c.drawImage(filelist[i] , 0,0)
    else:
      c.drawImage(filelist[i] , 0,0,maxw,maxh)
    c.showPage()
  c.save()
def main():
  topdf(u'F:/gitplace/jpg2pdf/test',pictureType=['png','jpg'],save='F:/gitplace/jpg2pdf/test/新建文件夹')
if __name__ == '__main__':
  main()

GitHub地址:https://github.com/mrbeann/jpg2pdf

更多Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
跟老齐学Python之重回函数
Oct 10 Python
Python多进程并发(multiprocessing)用法实例详解
Jun 02 Python
Python利用itchat对微信中好友数据实现简单分析的方法
Nov 21 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
用TensorFlow实现多类支持向量机的示例代码
Apr 28 Python
Python嵌套列表转一维的方法(压平嵌套列表)
Jul 03 Python
Django 用户认证组件使用详解
Jul 23 Python
python实现车牌识别的示例代码
Aug 05 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
python递归下载文件夹下所有文件
Aug 31 Python
python小程序基于Jupyter实现天气查询的方法
Mar 27 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 Python
如何使用python3获取当前路径及os.path.dirname的使用
Dec 13 #Python
PyQt5多线程刷新界面防假死示例
Dec 13 #Python
wxpython多线程防假死与线程间传递消息实例详解
Dec 13 #Python
python-web根据元素属性进行定位的方法
Dec 13 #Python
python Jupyter运行时间实例过程解析
Dec 13 #Python
Python time库基本使用方法分析
Dec 13 #Python
使用python 将图片复制到系统剪贴中
Dec 13 #Python
You might like
PHP在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
JavaScript图像放大镜效果实现方法详解
2020/06/28 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
python实现进程间通信简单实例
2014/07/23 Python
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
python字典的常用操作方法小结
2016/05/16 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
如何学习Python time模块
2020/06/03 Python
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
数据库面试要点基本概念
2013/10/31 面试题
校园门卫岗位职责
2013/12/09 职场文书
同学聚会欢迎辞
2014/01/14 职场文书
好家长事迹材料
2014/01/23 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android