总结用Python 操作 PDF 的几种方法


当前第2页 返回上一页

1

2

3

import glob

for file in glob.glob(path + '/*.pdf'):

    pdf_reader = PdfFileReader(path)复制代码

代码中 pdf_reader.getNumPages(): 能够获取读取器的页数,配合 range 就能遍历读取器的所有页。

pdf_writer.addPage(pdf_reader.getPage(page)) 能够将当前页交给写入器。

最后,用 with 新建一个 pdf 并由写入器的 pdf_writer.write(out) 方法输出即可。

04

拆分

如果明白了合并操作中读取器和写入器的配合,那么拆分就很好理解了,这里我们以拆分 INV1.pdf 为2个单独的 pdf 文档为例,同样也先来捋一捋逻辑:

  • 读取器读取 PDF 文档
  • 读取器一页一页交给写入器
  • 写入器每获取一页就立即输出

通过这个代码逻辑我们也可以明白,写入器初始化和输出的位置一定都在读取 PDF 循环每一页的循环体内,而不是在循环体外

代码很简单:

1

2

3

4

5

6

7

8

9

10

11

from PyPDF2 import PdfFileReader, PdfFileWriter

path = r'C:\Users\xxx'

pdf_reader = PdfFileReader(path + '\INV1.pdf')

 

for page in range(pdf_reader.getNumPages()):

    # 遍历到每一页挨个生成写入器

    pdf_writer = PdfFileWriter()

    pdf_writer.addPage(pdf_reader.getPage(page))

    # 写入器被添加一页后立即输出产生pdf

    with open(path + '\INV1-{}.pdf'.format(page + 1), 'wb') as out:

        pdf_writer.write(out)复制代码

05

水印

本次的工作是将下图作为水印添加到 INV1.pdf

首先是准备工作,将需要作为水印的图片插入 word 中调整合适位置后保存为PDF文件。然后就可以码代码了,需要额外用到 copy 模块,具体解释见下图:

就是把读取器和写入器初始化,并且把水印 PDF 页先读取好备用,核心代码稍微比较难理解:

加水印本质上就是把水印 PDF 页和需要加水印的每一页都合并一遍

由于需要加水印的 PDF 可能有很多页,而水印 PDF 只有一页,因此如果直接把水印 PDF 拿来合并,可以抽象理解成加完第一页,水印 PDF 页就没有了

因此不能直接拿来合并,而要把水印 PDF 页不断 copy 出来成新的一页备用 new_page ,再运用 .mergePage 方法完成跟每一页合并,把合并后的页交给写入器待最后统一输出!

关于 .mergePage 的使用:出现在下面的页 .mergePage (出现在上面的页),最后效果如图:

06

加密

加密很简单,只需要记住:「加密是针对写入器加密」

因此只需要在相关操作完成后调用 pdf_writer.encrypt (密码)

以单个 PDF 的加密为例:

写在最后

当然除了对 PDF 的合并、拆分、加密、水印,我们还可以使用 Python 结合 Excel 和 Word 实现更多的自动化需求,这些就留给读者自己开发。Python资源分享君羊1075110200 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

最后还是希望大家能够理解Python办公自动化的一个核心就是批量操作-解放双手,让复杂的工作自动化!

更多相关免费学习推荐:python教程(视频)

以上就是总结用Python 操作 PDF 的几种方法的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

Python的pip怎么用

Python怎么改字体

format在Python中是什么意思

Python中枚举类型的详解(代码示例)

为何选择Python进行数据分析

Python求两个数的最大公约数

如何利用Python实现购物程序思路以及实现代码

Python介绍 list.sort方法和内置函数sorted

Python中的while什么意思

Python中numpy的广播原则的代码解析

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...