借助 PyPDF2 库把数据分析系列教程文章制作成了PDF电子书,欢迎来领取!

简介: PyPDF2 库,顾名思义,就是用来操作PDF文件的,相信网上已经有太多相关的介绍文章了,我这里就不再赘述了。这里只重点一下制作书签的过程,网上好像还没有比较详细实用的文章!

合并PDF并添加书签


对于合并PDF,已经有很多成熟的代码了,我们拿来直接使用

from PyPDF2 import PdfFileReader, PdfFileWriter
def merge_pdf(infnList, outfn):
    pdf_mark_list = []
    pdf_output = PdfFileWriter()
    for infn in infnList:
        pdf_mark = []
        pdf_input = PdfFileReader(open(infn, 'rb'))
        # 获取 pdf 共用多少页
        page_count = pdf_input.getNumPages()
        for i in range(page_count):
            pdf_output.addPage(pdf_input.getPage(i))
    pdf_output.write(open(outfn, 'wb'))
if __name__ == '__main__':
    outfn = 'outfn.pdf'
    import os
    pdf_list = []
    for i in os.listdir():
        if os.path.splitext(i)[-1] == '.pdf':
            pdf_list.append(i)
    print(pdf_list)
    merge_pdf(pdf_list, outfn)


这样就可以方便的把当前目录下的所有PDF文件都合并到一个新的PDF当中,但是却有一个问题,就是没有书签,这对于一个教程类的文档来说,是及其不友好的,下面就来看看如何添加书签

根据 PyPDF2 的官方文档或网上的文章可以知道,添加书签可以使用下面的代码

# 添加书签
pdfWriter.addBookmark(title, pagenum, parent=parent)


但是也就这么一句话,完全没有真实的使用实例

根据我的尝试可以得出,对于 pagenum 参数,是用来指定书签页数的,要注意,PyPDF2 中PDF的页面是从0开始的,即在序列0添加书签时会跳到首页,在n处添加书签时会跳转至n+1页。

清楚上面的机制之后,就可以编码了,先编写一个添加书签的函数

def add_bookmark(pdfmark, outfile):
    print(pdfmark)
    pdf_output = PdfFileWriter()
    pdf_input = PdfFileReader(open(outfile, 'rb'))
    pdf_output.appendPagesFromReader(pdf_input)
    for i in pdfmark:
        pdf_output.addBookmark(i[0], i[1])
    pdf_output.write(open('bookmark.pdf', 'wb'))


该函数接收两个参数,一个列表参数 pdfmark,是一个二维列表,存储着书签的名称和所在页数,另一个参数则是当前需要编辑的已经存在的PDF文件

下面开始改写 merge_pdf 函数,把 add_bookmark 函数所需的 pdfmark 列表组装起来

def merge_pdf(infnList, outfn):
    pdf_mark_list = []
    pdf_output = PdfFileWriter()
    page_count = 1
    page_total = 0
    for infn in infnList:
        pdf_mark = []
        pdf_input = PdfFileReader(open(infn, 'rb'))
        page_tmp = page_count
        page_total += page_tmp
        # 获取 pdf 共用多少页
        page_count = pdf_input.getNumPages()
        print(page_count)
        print(page_total)
        pdf_mark.append(infn.split('.pdf')[0])
        pdf_mark.append(page_total - 1)
        pdf_mark_list.append(pdf_mark)
        for i in range(page_count):
            pdf_output.addPage(pdf_input.getPage(i))
    pdf_output.write(open(outfn, 'wb'))
    add_bookmark(pdf_mark_list, outfn)
    return pdf_mark_list, outfn

这样运行代码,就可以得到一个带有书签的PDF文档啦


电子书介绍


一直关注的朋友应该知道,在2020年我断断续续的更新了两个系列教程,分别是数据分析入门和Python Web 入门,Python Web 入门更新的慢一些,还在难产中。。。而数据分析入门已经完成,感兴趣的朋友可以翻看往期的推文查看


相关文章
|
2月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
107 0
|
4月前
|
Rust 数据挖掘 数据处理
Polars库:数据分析的新星,性能与易用性的完美结合
Polars库:数据分析的新星,性能与易用性的完美结合
199 1
|
2月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
148 4
数据分析的 10 个最佳 Python 库
|
2月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
70 2
|
2月前
|
前端开发 JavaScript
除了 jsPDF,还有哪些前端库可以用于生成 PDF?
【10月更文挑战第21天】这些前端库都有各自的特点和优势,你可以根据具体的项目需求、技术栈以及对功能的要求来选择合适的库。不同的库在使用方法、性能表现以及功能支持上可能会有所差异,需要根据实际情况进行评估和选择。
|
2月前
|
数据采集 数据可视化 数据挖掘
Python数据分析:Pandas库实战指南
Python数据分析:Pandas库实战指南
|
2月前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
4月前
|
机器学习/深度学习 算法 数据挖掘
Python数据分析革命:Scikit-learn库,让机器学习模型训练与评估变得简单高效!
在数据驱动时代,Python 以强大的生态系统成为数据科学的首选语言,而 Scikit-learn 则因简洁的 API 和广泛的支持脱颖而出。本文将指导你使用 Scikit-learn 进行机器学习模型的训练与评估。首先通过 `pip install scikit-learn` 安装库,然后利用内置数据集进行数据准备,选择合适的模型(如逻辑回归),并通过交叉验证评估其性能。最终,使用模型对新数据进行预测,简化整个流程。无论你是新手还是专家,Scikit-learn 都能助你一臂之力。
197 8
|
4月前
|
数据挖掘 API 数据处理
Python 数据分析及预处理常用库
Python自身数据分析功能有限,需借助第三方库增强。常用库包括NumPy、pandas、Matplotlib等。NumPy由Numeric发展而来,提供了多维数组对象及各种API,支持高效的数据处理,如数学、逻辑运算等,常作为其他高级库如pandas和Matplotlib的依赖库。其内置函数处理速度极快,建议优先使用以提升程序效率。
68 0
|
5月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
103 2

热门文章

最新文章