python 实现image to pdf

由于实习公司安全措施做的太好。。各种转pdf的网站进不去,破解软件也不让安装。

急于整理文献,就找了点办法,图片png转pdf
网上找的py2的 自用python3.7改了一阵

1.库的准备

import os
from PIL import Image
from reportlab.lib.pagesizes import portrait
from reportlab.pdfgen import canvas
from PyPDF2 import PdfFileReader,PdfFileWriter

由于不在学校么,文献都下不下来,在爱学术上惊奇的发现,一页一页文档可以右击另存为/新标签页打开,
于是手动存了一下。。(因为不多,要是多,还是想办法爬一爬)

2.单张图片转pdf

def imgtopdf(input_paths, outputpath):
    (maxw, maxh) = Image.open(input_paths).size
    c = canvas.Canvas(outputpath, pagesize=portrait((maxw, maxh)))
    c.drawImage(input_paths, 0, 0, maxw, maxh)
    c.showPage()
    c.save()

3.拼接多张pdf

#遍历一下,放一个list里
def getFileName(filepath):
    file_list = []
    for root,dirs,files in os.walk(filepath):
        for filespath in files:
            file_list.append(os.path.join(root,filespath))
    return file_list

def MergePDF(filepath,outfile):
    output=PdfFileWriter()
    outputPages=0
    pdf_fileName=getFileName(filepath)
    for each in pdf_fileName:
        print(each)
        # 读取源pdf文件
        input = PdfFileReader(open(each, "rb"))

        # 获得源pdf文件中页面总数
        pageCount = input.getNumPages()
        outputPages += pageCount
        print(pageCount)

        # 分别将page添加到输出output中
        for iPage in range(0, pageCount):
            output.addPage(input.getPage(iPage))

    print('All Pages Number:'+str(outputPages))
    outputStream=open(filepath+outfile,"wb")
    output.write(outputStream)
    outputStream.close()
    print('finished')

po下全过程啦

import os
from PIL import Image
from reportlab.lib.pagesizes import portrait
from reportlab.pdfgen import canvas
from PyPDF2 import PdfFileReader,PdfFileWriter

def imgtopdf(input_paths, outputpath):
    (maxw, maxh) = Image.open(input_paths).size
    c = canvas.Canvas(outputpath, pagesize=portrait((maxw, maxh)))
    c.drawImage(input_paths, 0, 0, maxw, maxh)
    c.showPage()
    c.save()

def getFileName(filepath):
    file_list = []
    for root,dirs,files in os.walk(filepath):
        for filespath in files:
            # print(os.path.join(root,filespath))
            file_list.append(os.path.join(root,filespath))
    return file_list

def MergePDF(filepath,outfile):
    output=PdfFileWriter()
    outputPages=0
    pdf_fileName=getFileName(filepath)
    for each in pdf_fileName:
        print(each)
        # 读取源pdf文件
        input = PdfFileReader(open(each, "rb"))

        # 获得源pdf文件中页面总数
        pageCount = input.getNumPages()
        outputPages += pageCount
        print(pageCount)

        # 分别将page添加到输出output中
        for iPage in range(0, pageCount):
            output.addPage(input.getPage(iPage))
    print('All Pages Number:'+str(outputPages))
    outputStream=open(filepath+outfile,"wb")
    output.write(outputStream)
    outputStream.close()
    print('finished')

if __name__ == '__main__':
    path = './image'
    for file in os.listdir(path):
        # print(file)
        imgtopdf('./image/%s' % file, "./topdf/%s.pdf" % file)
    file_dir = r'./topdf'
    out=u"whole.pdf"
    MergePDF(file_dir,out)
全部评论

相关推荐

不愿透露姓名的神秘牛友
03-08 19:53
已编辑
AAA不喝拿铁:海投吧,感觉项目写的可以了,能cover住提问就行。我根据真实面经整理得到的最全(高/中/低频)面试题,适合面试前短期突击&长期提高补充,需要的牛u可以关注一手我的专栏,祝好运
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务