2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python jpg转pdf_Python3将jpg转为pdf文件的方法示例

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

时间:2020-01-16 13:10:00

相关推荐

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

GitHub地址:/mrbeann/jpg2pdf

更多Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。