由于实习公司安全措施做的太好。。各种转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)