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 相关文章推荐
打开电脑上的QQ的python代码
Feb 10 Python
Python列表推导式的使用方法
Nov 21 Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
python中如何使用朴素贝叶斯算法
Apr 06 Python
Python实现简单的获取图片爬虫功能示例
Jul 12 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
如何实现Django Rest framework版本控制
Jul 25 Python
浅析Python数字类型和字符串类型的内置方法
Dec 22 Python
基于python实现微信好友数据分析(简单)
Feb 16 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 Python
深入了解Python 变量作用域
Jul 24 Python
python glom模块的使用简介
Apr 13 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 分页原理详解
2009/08/21 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
python基础教程之对象和类的实际运用
2014/08/29 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
python调用c++传递数组的实例
2019/02/13 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
德国机车企业:FC-Moto
2017/10/27 全球购物
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
外语系毕业生找工作的求职信
2013/11/28 职场文书
《九寨沟》教学反思
2014/04/08 职场文书
个人安全承诺书
2014/05/22 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript
使用php的mail()函数实现发送邮件功能
2021/06/03 PHP