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

简介: 借助 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月前
|
前端开发 JavaScript
除了 jsPDF,还有哪些前端库可以用于生成 PDF?
【10月更文挑战第21天】这些前端库都有各自的特点和优势,你可以根据具体的项目需求、技术栈以及对功能的要求来选择合适的库。不同的库在使用方法、性能表现以及功能支持上可能会有所差异,需要根据实际情况进行评估和选择。
|
8月前
|
数据挖掘 程序员 数据安全/隐私保护
解锁PDF潜力:9个Python库让你的文档处理更高效
程序员晚枫分享了Python处理PDF的9个第三方库,包括PyPDF2、pdfrw、ReportLab、pikepdf、pdfplumber、pdfminer.six、PyMuPDF、popdf和borb,各具优缺点。选择时需考虑应用场景、功能需求、库的维护状态和开源协议。例如,pdfplumber擅长内容提取,而ReportLab和PyMuPDF适用于创建和修改内容。
924 7
|
5月前
|
XML JSON 数据安全/隐私保护
PyMuPDF,Python处理PDF的宝藏库
PyMuPDF,Python处理PDF的宝藏库
129 2
|
6月前
|
数据挖掘 Python
利用Python进行数据分析PDF下载经典数据分享推荐
**Python数据分析大师作,Wes McKinney亲著,详述数据操作、清洗与分析。第2版面向Python 3.6,涵盖pandas、NumPy、IPython和Jupyter更新,实战案例丰富;第3版已升级至Python 3.10和pandas 1.4,继续引领数据科学潮流。[PDF下载](https://zhangfeidezhu.com/?p=337)**
98 0
利用Python进行数据分析PDF下载经典数据分享推荐
|
7月前
|
数据挖掘 数据处理
最近在读《谁说菜鸟不会数据分析 SPSS篇》pdf分享
《谁说菜鸟不会数据分析(SPSS篇)》面向职场新人,以轻松方式讲解SPSS在数据分析中的应用,涵盖统计描述、推断和探索性分析,避开复杂术语,适合产品运营、市场、金融等领域从业者提升效率。[PDF下载](https://zhangfeidezhu.com/?p=339)
92 0
最近在读《谁说菜鸟不会数据分析 SPSS篇》pdf分享
|
7月前
|
XML Java 数据格式
Java用xpdf库获取pdf文件的指定范围文本内容
Java用xpdf库获取pdf文件的指定范围文本内容
105 1
|
8月前
|
Ubuntu
蓝易云 - ubuntu下安装Sphinx,编译pdf教程
以上就是在Ubuntu系统下安装Sphinx并使用它来编译PDF的过程。希望这个教程对你有所帮助!
91 0
|
5月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
99 2
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
273 4
|
2月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
115 4
数据分析的 10 个最佳 Python 库