用python合并pdf,并添加书签

使用Python的pypdf2库,将多个PDF文件合并为一个,并在合并过程中添加书签。首先通过pip安装pypdf2,然后运行示例代码mergePDF.py,将指定的PDF文件逐一添加到新PDF中,最终生成包含所有页面的合并文件,共36页,整个过程耗时0.47秒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前得到了很多文章的pdf,现在需要把它们合到一个pdf文件中。
使用python库pypdf2可以实现这个功能。
首先要安装
pip install pypdf2
然后运行下面的示例 python mergePDF.py
mergePDF.py

# -*- coding:utf-8*-

import os
import os.path
from PyPDF2 import PdfFileReader, PdfFileWriter
import time
import glob


def getFileName(filepath):
    file_list = glob.glob("{}/*.pdf".format(filepath))
    # 默认按照字典序排序,也可以安装自定义的方式排序
    # file_list.sort()
    return file_list

###########合并同一个文件夹下所有PDF文件###############
def MergePDF(filepath, outfile):
    output = PdfFileWriter()
    outputPages = 0
    pdf_fileName = getFileName(filepath)
    for each_file in pdf_fileName:
        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
        print("%s has %d pages" % (each_file, pageCount))

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

        # 添加书签
        each_file = os.path.basename(each_file)
        output.addBookmark(
            title=each_file[:-3], pagenum=outputPages - pageCount)

    print("All Pages Number: " + str(outputPages))
    # 最后写pdf文件
    outputStream = open(os.path.join(filepath, outfile), "wb")
    output.write(outputStream)
    outputStream.close()
    print("finished")


if __name__ == '__main__':
    time1 = time.time()
    file_dir = '.' # 多个pdf所在目录
    out_file = u"test.pdf" # 合并后的pdf文件名
    MergePDF(file_dir, out_file)
    time2 = time.time()
    print(u'总共耗时: %.4f s' % (time2 - time1))

结果输出如下:
D:\Program Files\phantomjs-2.1.1-windows\bin>python mergePDF.py
adding 3.pdf
3.pdf has 1 pages
adding 4.pdf
4.pdf has 1 pages
adding baidu.pdf
baidu.pdf has 1 pages
adding fun.pdf
fun.pdf has 1 pages
adding fun1.pdf
fun1.pdf has 1 pages
adding fun10.pdf
fun10.pdf has 8 pages
adding fun2.pdf
fun2.pdf has 1 pages
adding fun3.pdf
fun3.pdf has 1 pages
adding fun4.pdf
fun4.pdf has 8 pages
adding fun5.pdf
fun5.pdf has 1 pages
adding fun6.pdf
fun6.pdf has 1 pages
adding fun7.pdf
fun7.pdf has 8 pages
adding fun8.pdf
fun8.pdf has 1 pages
adding fun9.pdf
fun9.pdf has 1 pages
adding sai.pdf
sai.pdf has 1 pages
All Pages Number: 36
finished
总共耗时: 0.4700 s

生成的pdf效果如下:
这里写图片描述

Python学习手册(第3版).pdf本书包括:   类型和操作——深入讨论Python主要的内置对象类型:数字、列表和字典等。   语句和语法——在Python中输入代码来建立处理对象,以及Python一般的语法模型。   函数——Python基本的面向过程工具,用于组织代码和重用。   模块——封装语句、函数以及其他工具,从而可以组织成较大的组件。   类和OOP——Python可选的面向对象编程工具,可用于组织程序代码从而实现定制和重用。   异常和工具——异常处理模型和语句,介绍编写更大程序的开发工具。 《Python学习手册(第3版)》讲述了:Python可移植、功能强大、易于使用,是编写独立应用程序和脚本应用程序的理想选择。无论你是刚接触编程或者刚接触Python,通过学习《Python学习手册(第3版)》,你可以迅速高效地精通核心Python语言基础。读完《Python学习手册(第3版)》,你会对这门语言有足够的了解,从而可以在你所从事的任何应用领域中使用它。, 《Python学习手册(第3版)》是作者根据过去10年用于教学而广为人知的培训课程的材料编写而成的。除了有许多详实说明和每章小结之外,每章还包括一个头脑风 暴:这是《Python学习手册(第3版)》独特的一部分,配合以实用的练习题和复习题,让读者练习新学的技巧测试自己的理解程度。, 《Python学习手册(第3版)》包括:, 类型和操作——深入讨论Python主要的内置对象类型:数字、列表和字典等。, 语句和语法——在Python中输入代码来建立处理对象,以及Python一般的语法模型。, 函数——Python基本的面向过程工具,用于组织代码和重用。, 模块——封装语句、函数以及其他工具,从而可以组织成较大的组件。, 类和OOP——Python可选的面向对象编程工具,可用于组织程序代码从而实现定制和重用。, 异常和工具——异常处理模型和语句,介绍编写更大程序的开发工具。, 讨论Python 3.0。, 《Python学习手册(第3版)》让你对Python语言有深入而完整的了解,从而帮助你理解今后遇到的任何Python应用程序实例。如果你准备探索Google和YouTube为什么选中了Python,《Python学习手册(第3版)》就是你入门的最佳指南。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值