前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python实现pdf文档合并

python实现pdf文档合并

作者头像
efonfighting
发布2019-10-08 14:23:51
1.2K0
发布2019-10-08 14:23:51
举报
文章被收录于专栏:一番码客一番码客

目录:

使用PyPDF2库

获取要合并的pdf文件的文件列表

使用PyPDF2合并pdf文档

一番今日

之前一番在免费知识星球给大家开发过一个在windows下使用的简单的pdf合并工具。其实用python去实现真的很简单,用了tkinter + PyPDF2 + pyinstaller。 今天一番来解读下这个小工具怎么用python实现pdf文档合并的,而且合并完后还自带目录。

使用PyPDF2库

python里最大的好处就是封装了各种强大的轮子。同样,操作pdf也有强大的库,就是PyPDF2库。这里我们就是用的PyPDF2来实现读取pdf,然后合并pdf的。

获取要合并的pdf文件的文件列表

代码语言:javascript
复制
def getFileName(filepath):

    file_list = sorted(glob.glob("{}*.pdf".format(filepath) ),key=os.path.getmtime, reverse=False)
    return file_list
  • sorted函数:获取一个文件夹里的所有pdf文件的列表,并且以pdf文件的修改时间为排序,通过reverse可以选择排序是否逆序。

这样便获取到了所有要合并的pdf文件的列表了。

使用PyPDF2合并pdf文档

代码语言:javascript
复制
def MergePDF(filepath, fileNameList, outfile):
    mergedDir = filepath + '/merged/'
    if not (os.path.isdir(mergedDir)):
        os.system('mkdir -p {}'.format(mergedDir))

    output = PdfFileWriter()
    outputPages = 0

    for each_file in fileNameList:
        print("adding %s" % each_file)
        # 读取源pdf文件
        input = PdfFileReader(open(each_file, "rb"))

        # 如果pdf文件已经加密,必须首先解密才能使用pyPdf
        if input.isEncrypted == True:
            input.decrypt("map")

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

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

        # 添加书签
        output.addBookmark(
            title=each_file[:-3].replace(filepath,''), pagenum=outputPages - pageCount)

    print("All Pages Number: " + str(outputPages))
    # 最后写pdf文件
    outputStream = open(mergedDir + outfile, "wb")
    output.write(outputStream)
    outputStream.close()
    print("finished")
  • 这里先建一个存放合并后文档的目录。
  • 用PyPDF2库里的PdfFileWriter函数创建一个文件写入流。
  • 用PyPDF2库里的PdfFileReader函数逐一读取pdf文件,并添加到上一步创建的文件写入流,并添加书签。
  • 将文件写入流写入pdf文件。

就是这么简单。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一番码客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取要合并的pdf文件的文件列表
  • 使用PyPDF2合并pdf文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档