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 09 Python
基于Django模板中的数字自增(详解)
Sep 05 Python
python的Crypto模块实现AES加密实例代码
Jan 22 Python
Python实现批量压缩图片
Jan 25 Python
python版本五子棋的实现代码
Dec 11 Python
详解python中init方法和随机数方法
Mar 13 Python
详解Python3 对象组合zip()和回退方式*zip
May 15 Python
python实现五子棋游戏
Jun 18 Python
通过python3实现投票功能代码实例
Sep 26 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
python 多进程和协程配合使用写入数据
Oct 30 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 trim 去除空字符的定义与语法介绍
2010/05/31 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
CI框架给视图添加动态数据
2014/12/01 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
javascript document.compatMode兼容性
2010/02/23 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
Python模拟登录12306的方法
2014/12/30 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
python交互模式基础知识点学习
2020/06/18 Python
python实现画图工具
2020/08/27 Python
用python绘制樱花树
2020/10/09 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
Photobook澳大利亚:制作相片书,婚礼卡,旅行相簿
2017/01/12 全球购物
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
教师暑期培训感言
2014/08/15 职场文书
幼师小班个人总结
2015/02/12 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
博士论文答辩开场白
2015/06/01 职场文书
单位证明范文
2015/06/18 职场文书
考研经验交流会策划书
2015/11/02 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
教师网络培训心得体会
2016/01/09 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书