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 文件操作技巧(File operation) 实例代码分析
Aug 11 Python
Python 实现域名解析为ip的方法
Feb 14 Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 Python
python中类的输出或类的实例输出为这种形式的原因
Aug 12 Python
django实现支付宝支付实例讲解
Oct 17 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
Python切割图片成九宫格的示例代码
Mar 10 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
python中zip()函数遍历多个列表方法
Feb 18 Python
python爬虫线程池案例详解(梨视频短视频爬取)
Feb 20 Python
教你怎么用python实现字符串转日期
May 24 Python
OpenCV-Python实现怀旧滤镜与连环画滤镜
Jun 09 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
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
php生成随机颜色的方法
2014/11/13 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
Django URL传递参数的方法总结
2016/08/28 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
联想C++笔试题
2012/06/13 面试题
《大作家的小老师》教学反思
2014/04/16 职场文书
学习计划书怎么写
2014/09/15 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
2014年医院工作总结
2014/11/20 职场文书
单身证明格式样本
2015/06/15 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL