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简单连接MongoDB数据库的方法
Mar 15 Python
python 用正则表达式筛选文本信息的实例
Jun 05 Python
浅谈Python脚本开头及导包注释自动添加方法
Oct 27 Python
python 实现UTC时间加减的方法
Dec 31 Python
python使用flask与js进行前后台交互的例子
Jul 19 Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 Python
使用pandas库对csv文件进行筛选保存
May 25 Python
Python中bisect的用法及示例详解
Jul 20 Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 Python
Python 里最强的地图绘制神器
Mar 01 Python
Python如何配置环境变量详解
May 18 Python
python数字图像处理之对比度与亮度调整示例
Jun 28 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中使用Oracle数据库(4)
2006/10/09 PHP
php5 pdo新改动加载注意事项
2008/09/11 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
php实现的双向队列类实例
2014/09/24 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
JavaScript静态的动态
2006/09/18 Javascript
js jquery数组介绍
2012/07/15 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
JavaScript中通过提示框跳转页面的方法
2016/02/14 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
在Python中使用元类的教程
2015/04/28 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
python实现换位加密算法的示例
2018/10/14 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
python异常触发及自定义异常类解析
2019/08/06 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
python scatter函数用法实例详解
2020/02/11 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
毕业生求职简历中的自我评价
2013/10/18 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang
原生JS实现飞机大战小游戏
2021/06/09 Javascript
科普 | 业余无线电知识-波段篇
2022/02/18 无线电
Python循环之while无限迭代
2022/04/30 Python
深入理解pytorch库的dockerfile
2022/06/10 Python