python 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()

希望本文所述对大家Python程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值