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判断、获取一张图片主色调的2个实例
Apr 10 Python
python安装cx_Oracle模块常见问题与解决方法
Feb 21 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
May 16 Python
Django的分页器实例(paginator)
Dec 01 Python
Python实现扣除个人税后的工资计算器示例
Mar 26 Python
Python实现基于POS算法的区块链
Aug 07 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
使用Python实现分别输出每个数组
Dec 06 Python
Python操作redis和mongoDB的方法
Dec 19 Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 Python
python 装饰器的使用示例
Oct 10 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 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
IIS6的PHP最佳配置方法
2007/03/19 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
php实现的验证码文件类实例
2015/06/18 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python概率计算器实例分析
2015/03/25 Python
python线程、进程和协程详解
2016/07/19 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
利用python如何处理nc数据详解
2018/05/23 Python
小白入门篇使用Python搭建点击率预估模型
2018/10/12 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
python中adb有什么功能
2020/06/07 Python
python os模块在系统管理中的应用
2020/06/22 Python
pytorch简介
2020/11/11 Python
生物制药毕业生自荐信
2013/10/16 职场文书
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
青春寄语大全
2014/04/09 职场文书
大一新生期末自我评价
2014/09/12 职场文书
个人催款函范文
2015/06/24 职场文书
公司考勤管理制度
2015/08/04 职场文书
Python 中random 库的详细使用
2021/06/03 Python