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分割文件的常用方法
Nov 01 Python
Python的Django框架中的数据过滤功能
Jul 17 Python
Python实现对百度云的文件上传(实例讲解)
Oct 21 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
对python使用http、https代理的实例讲解
May 07 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
使用Python正则表达式操作文本数据的方法
May 14 Python
python实现雪花飘落效果实例讲解
Jun 18 Python
python实现共轭梯度法
Jul 03 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 Python
Python3通过chmod修改目录或文件权限的方法示例
Jun 08 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/11/10 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
[04:21]狐狸妈带你到现场 DOTA2 TI中国区预选赛线下赛路线指引
2014/05/22 DOTA
跟老齐学Python之用Python计算
2014/09/12 Python
Django中使用group_by的方法
2015/05/26 Python
python去掉行尾的换行符方法
2017/01/04 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
股份合作协议书范本
2014/04/14 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
商务考察邀请函模板
2015/02/02 职场文书
联欢会开场白
2015/06/01 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
python cv2图像质量压缩的算法示例
2021/06/04 Python
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle