怎么在第一个 PDF 文件的中间,插入第二个 PDF 文件的内容?

这是「进击的Coder」的第 568 篇技术分享

作者:Python 进阶者

来源:Python 爬虫与数据挖掘

阅读本文大概需要 3 分钟。

前言

前几天在学习【麦叔】Python 自动化书本中案例的时候,学到了 PDF 文件处理,感觉挺有意思的。正好在【J 哥】的交流群里边有粉丝问了一道关于 PDF 处理的问题。

2078c45c926346ed2b091f336996bfda.png这个问题如果没有学点 PDF 的处理,一开始看到还是觉得有点困难的,我一开始也有点束手无策。

一、思路

针对这个问题,其实我有三个思路。

第一个思路:将 pdf 文件一进行分割成单独文件,之后和 pdf 文件二进行排序放到一个文件夹下,再统一进行 merge;

第二个思路:尝试用 merge 进行合并,直接插入到文件的指定页面之下,但是我目前对这个用得不是很好,没有弄出来;

第三个思路:逐页进行添加,并保存为新文件。

二、解决方案

针对该问题,这里采用了第三个方法,最为自然,也是三个方法中最简单的一个了。这里需要用到 PDF 的处理库 PyPDF2,这个库需要安装,安装命令:pip install PyPDF2

这个库针对 PDF 的处理来说还是算比较强大的了,可以针对 PDF 文件做拆分、合并、加密和截取等。关于这个库的其他用法,很多公众号也有写,这里就不展开赘述了。

针对这个问题,这里直接上代码了,如下所示:

from PyPDF2 import PdfFileReader, PdfFileWriter

pdf_file1 = PdfFileReader("dogs_0.pdf")  # 要插入的pdf文件
pdf_file2 = PdfFileReader("python介绍.pdf")  # 要被插入的目标pdf文件
new_file = PdfFileWriter()

# 这里场景是计划将pdf_file1插入到pdf_file2的第3页

new_file.addPage(pdf_file2.getPage(0))
new_file.addPage(pdf_file2.getPage(1))
new_file.addPage(pdf_file1.getPage(0))
new_file.addPage(pdf_file2.getPage(2))

# 写入文件
with open("merged_file.pdf", "wb") as f:
    new_file.write(f)

关键的地方都有注释进行标注了,如果你需要插入的 pdf 原始文件页面太多的话,可以考虑循环遍历追加,这样就不至于写很多行代码了。

f0021503e5d96369c2cdb6464d34b91d.png

三、总结 

我是 Python 进阶者。本文基于实际过程中遇到的 PDF 文件拆分和合并问题,使用了 PyPDF2 第三方库来帮助解决,这个库可以针对 PDF 文件做拆分、合并、加密和截取等,功能强大,帮助自己和大家加深对该库用法的认识。

最后感谢粉丝【ᝰડⅈꪶꦍꪀᥴ꧖ꦿ】提问,感谢【麦叔】、【南京-工业4.0-MrChen】大佬给出的资料和方法。

这个问题肯定小编相信肯定还有其他的方法的,也欢迎大家在评论区留言。

83fca69385972506037ebd183a0e1b77.png

End

崔庆才的新书《Python3网络爬虫开发实战(第二版)》已经正式上市了!书中详细介绍了零基础用 Python 开发爬虫的各方面知识,同时相比第一版新增了 JavaScript 逆向、Android 逆向、异步爬虫、深度学习、Kubernetes 相关内容,‍同时本书已经获得 Python 之父 Guido 的推荐,目前本书正在七折促销中!

内容介绍:《Python3网络爬虫开发实战(第二版)》内容介绍

9bd912e5226c729c3af9c1519eae955b.png

扫码购买

95d4f8043a027d72d76dbb7c4153fe36.png

好文和朋友一起看~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值