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字符编码判断方法分析
Jul 01 Python
Python中使用asyncio 封装文件读写
Sep 11 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
Jun 05 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
pycharm 取消默认的右击运行unittest的方法
Nov 29 Python
Python在Matplotlib图中显示中文字体的操作方法
Jul 29 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
jupyter notebook的安装与使用详解
May 18 Python
idea2020手动安装python插件的实现方法
Jul 17 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
Sep 03 Python
python实现马丁策略回测3000只股票的实例代码
Jan 22 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 图片上传代码
2011/09/13 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
分享php邮件管理器源码
2016/01/06 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
一些不错的js函数ajax
2008/08/20 Javascript
asp.net下利用js实现返回上一页的实现方法小集
2009/11/24 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
2016/03/01 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
javascript的惯性运动实现代码实例
2019/09/07 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
Python实现购物程序思路及代码
2017/07/24 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
python中的decorator的作用详解
2018/07/26 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
pytorch中index_select()的用法详解
2021/01/06 Python
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
房地产营销策划方案
2014/02/08 职场文书
西式婚礼主持词
2014/03/13 职场文书
高校教师自荐信范文
2014/03/13 职场文书