借助 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月前
|
数据采集 机器学习/深度学习 数据可视化
深入学习NumPy库在数据分析中的应用场景
深入学习NumPy库在数据分析中的应用场景
|
3月前
|
存储 数据可视化 数据挖掘
Python在数据分析中的利器:Pandas库全面解析
【2月更文挑战第7天】 众所周知,Python作为一种简洁、易学且功能强大的编程语言,被广泛运用于数据科学和人工智能领域。而Pandas库作为Python中最受欢迎的数据处理库之一,在数据分析中扮演着举足轻重的角色。本文将全面解析Pandas库的基本功能、高级应用以及实际案例,带您深入了解这个在数据分析领域的利器。
57 1
|
4月前
|
数据可视化 数据挖掘 Java
提升代码质量与效率的利器——SonarQube静态代码分析工具从数据到洞察:探索Python数据分析与科学计算库
在现代软件开发中,保证代码质量是至关重要的。本文将介绍SonarQube静态代码分析工具的概念及其实践应用。通过使用SonarQube,开发团队可以及时发现和修复代码中的问题,提高代码质量,从而加速开发过程并减少后期维护成本。 在当今信息爆炸的时代,数据分析和科学计算成为了决策和创新的核心。本文将介绍Python中强大的数据分析与科学计算库,包括NumPy、Pandas和Matplotlib,帮助读者快速掌握这些工具的基本用法和应用场景。无论是数据处理、可视化还是统计分析,Python提供了丰富的功能和灵活性,使得数据分析变得更加简便高效。
|
22天前
|
数据采集 数据挖掘 数据处理
Pandas库在数据分析中的作用
【4月更文挑战第9天】Pandas,一个基于NumPy的数据分析Python库,以强大的数据处理和便捷的接口闻名。它包含两个核心数据结构:Series(一维标签数组)和DataFrame(二维表格)。Pandas支持数据导入/导出(如CSV、Excel),数据清洗(处理缺失值和重复值),描述性统计分析,分组聚合,以及与Matplotlib等库集成实现数据可视化。通过多索引和层次化索引,Pandas能灵活处理复杂数据集,是数据科学领域的关键工具。本文旨在帮助读者理解并运用Pandas进行高效数据分析。
|
3月前
|
SQL 数据可视化 数据挖掘
利用Python中的Pandas库进行数据分析和可视化
Python语言中的Pandas库是一个功能强大的工具,可用于数据处理、清洗、分析和可视化。本文将介绍如何利用Pandas库对数据进行处理和分析,并结合Matplotlib库进行数据可视化,帮助读者快速掌握数据分析和可视化的基本方法。
32 3
|
3月前
|
数据采集 人工智能 数据挖掘
Python数据分析:利用Pandas库处理缺失数据的技巧
在数据分析中,数据的完整性对结果的准确性至关重要。本文将介绍如何利用Python中强大的Pandas库来处理数据中的缺失值,帮助您更好地进行数据清洗和分析。
|
3月前
|
数据可视化 数据挖掘 大数据
Python中的数据分析与可视化库Matplotlib简介
在当前大数据时代,数据分析和可视化成为了技术领域的热门话题。Python作为一门流行的编程语言,拥有丰富的数据处理和可视化库,其中Matplotlib是其中的佼佼者。本文将介绍Matplotlib库的基本概念、功能特点以及在数据分析与可视化中的应用。
29 0
|
4月前
|
存储 数据挖掘 索引
Python 教程之 Pandas(14)—— 使用 Pandas 进行数据分析
Python 教程之 Pandas(14)—— 使用 Pandas 进行数据分析
27 0
Python 教程之 Pandas(14)—— 使用 Pandas 进行数据分析
|
4月前
|
SQL 数据可视化 数据挖掘
Python数据分析与科学计算库:开启数据世界的大门
在当今数字化时代,数据分析和科学计算成为了各行业发展的关键。Python作为一种功能强大且易于使用的编程语言,拥有多种优秀的数据分析与科学计算库,如NumPy、Pandas和Matplotlib。本文将介绍这些库的基本特点和用途,并探讨它们在数据处理、统计分析和可视化方面的应用,旨在帮助读者更好地理解和应用Python进行数据分析和科学计算。
27 3
|
4月前
|
存储 数据可视化 数据挖掘
探索Python数据分析与科学计算库:解锁数据洞察之门
在当今信息爆炸的时代,数据成为了驱动业务决策和创新的核心资源。Python作为一种强大而灵活的编程语言,在数据分析和科学计算领域扮演着重要角色。本文将介绍Python中常用的数据分析与科学计算库,包括NumPy、Pandas和Matplotlib,探索它们的功能和用法,并展示如何利用这些库进行数据处理、分析和可视化,帮助读者更好地理解和应用数据。
23 2