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 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
Python原始字符串(raw strings)用法实例
Oct 13 Python
Python中用Spark模块的使用教程
Apr 13 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
python递归函数绘制分形树的方法
Jun 22 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
PyTorch的Optimizer训练工具的实现
Aug 18 Python
基于python求两个列表的并集.交集.差集
Feb 10 Python
django实现HttpResponse返回json数据为中文
Mar 27 Python
如何快速理解python的垃圾回收机制
Sep 01 Python
python单元测试框架pytest的使用示例
Oct 07 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记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
PHP7常量数组用法分析
2016/09/26 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
js防抖和节流的深入讲解
2018/12/06 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
Windows8下安装Python的BeautifulSoup
2015/01/22 Python
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
2019/12/12 Python
python中如何使用虚拟环境
2020/10/14 Python
CSS实现聊天气泡效果
2020/04/26 HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
Tostadora意大利:定制T恤
2019/04/08 全球购物
国贸专业个人求职信范文
2014/01/08 职场文书
升学宴主持词
2014/04/02 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
十岁生日答谢词
2015/01/05 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
党支部综合考察意见
2015/06/01 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs
速龙x4-860k处理器相当于i几
2022/04/20 数码科技
python热力图实现的完整实例
2022/06/25 Python