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的身份证号码自动生成程序
Aug 15 Python
浅谈python多线程和队列管理shell程序
Aug 04 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
django中SMTP发送邮件配置详解
Jul 19 Python
Python socket实现的文件下载器功能示例
Nov 15 Python
pytorch AvgPool2d函数使用详解
Jan 03 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
Python如何用filter函数筛选数据
Mar 05 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
Python 如何查找特定类型文件
Aug 17 Python
pytest配置文件pytest.ini的详细使用
Apr 17 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语法(3)
2006/10/09 PHP
php中截取字符串支持utf-8
2007/01/18 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
8个必备的PHP功能实例代码
2013/10/27 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
Python的time模块中的常用方法整理
2015/06/18 Python
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
使用python实现飞机大战游戏
2020/03/23 Python
python Selenium 库的使用技巧
2020/10/16 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
什么是Rollback Segment
2013/04/22 面试题
运动会开幕式解说词
2014/02/05 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
市场总经理岗位职责
2014/04/11 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
与美同行演讲稿
2014/09/13 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
员工辞职信范文
2015/03/02 职场文书
JavaScript ES6的函数拓展
2022/01/18 Javascript
分享几种python 变量合并方法
2022/03/20 Python