Python3将jpg转为pdf文件的方法示例

 更新时间:2019年12月13日 09:31:34   作者:nudt_qxx  
这篇文章主要介绍了Python3将jpg转为pdf文件的方法,结合完整实例形式分析了Python3针对jpg转pdf格式的文件读写、编码装换等相关操作技巧,需要的朋友可以参考下

本文实例讲述了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 OpenCV实现图像形状检测

    Python OpenCV实现图像形状检测

    图像形状检测是计算机视觉领域中的一项关键技术,广泛应用于工业自动化、机器人视觉、医学图像处理等多个领域,本文将介绍如何使用Python OpenCV实现图像形状检测,需要的可以参考下
    2024-11-11
  • Python matplotlib实时画图案例

    Python matplotlib实时画图案例

    这篇文章主要介绍了Python matplotlib实时画图案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python中的异常处理详解

    Python中的异常处理详解

    这篇文章主要介绍了Python中的异常处理详解,在编写Python程序时,经常会遇到各种运行时错误,这些错误会导致程序终止并抛出异常。然而,有时我们希望程序能优雅地处理这些错误,而不是直接崩溃,这就需要用到异常处理了,需要的朋友可以参考下
    2023-07-07
  • 利用Python解决Excel问题的最佳方案总结

    利用Python解决Excel问题的最佳方案总结

    python处理excel文件有很多方法,最开始接触的是xlrd、xlsxwriter模块,分别用于excel文件的读、写,后来又学习了openpyxl模块,可以同时完成excel文件的读、写,下面这篇文章主要给大家介绍了关于利用Python解决Excel问题的最佳方案,需要的朋友可以参考下
    2023-04-04
  • python对列进行平移变换的方法(shift)

    python对列进行平移变换的方法(shift)

    今天小编就为大家分享一篇python对列进行平移变换的方法(shift),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 如何用 Python 制作一个迷宫游戏

    如何用 Python 制作一个迷宫游戏

    这篇文章主要介绍了如何用 Python 制作一个迷宫游戏,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2021-02-02
  • Python基于execjs运行js过程解析

    Python基于execjs运行js过程解析

    这篇文章主要介绍了Python基于execjs运行js过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Python验证码识别的方法

    Python验证码识别的方法

    这篇文章主要介绍了Python验证码识别的方法,涉及Python针对验证码图片的相关分析与操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Python web开发之用Tornado框架制作简易表白墙网站

    Python web开发之用Tornado框架制作简易表白墙网站

    这篇文章将用Python做Web开发。在Python当中,WEB开发框架主要有三个,本文将利用Tornado框架做一个简单的表白墙网站,感兴趣的可以了解一下
    2022-02-02
  • Python转换时间的图文方法

    Python转换时间的图文方法

    在本篇文章里小编给大家整理的是关于Python转换时间的方法以及具体步骤流程,需要的朋友们参考下。
    2019-07-07

最新评论