首页 > 其他分享 >怎么在第一个PDF文件的中间,插入第二个PDF文件的内容?

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

时间:2023-04-27 10:32:11浏览次数:40  
标签:文件 file2 new 插入 file pdf PDF


昨夜裙带解,今朝蟢子飞。

大家好,我是Python进阶者。

前言

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

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

这个问题如果没有学点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原始文件页面太多的话,可以考虑循环遍历追加,这样就不至于写很多行代码了。

怎么在第一个PDF文件的中间,插入第二个PDF文件的内容?_编程语言_02

三、总结 

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


标签:文件,file2,new,插入,file,pdf,PDF
From: https://blog.51cto.com/u_13389043/6229707

相关文章

  • python yaml 配置文件的使用
    yaml介绍yaml的英文名称是YetAnotherMarkupLanguage,直译过来就是标记语言。yaml用的比较多的地方就是写配置文件,比如yaml配置文件在Kubernetes用的就非常广泛,学Kubernetes必须要先学yaml文件格式。yaml的基本语法:大小写敏感使用缩进表示层级关系缩进时不允许使用Tab......
  • 使用Windows API获取文件,或者文件夹的大小
    获取一个文件的大小:通过使用GetFileSizeEx获取文件的大小,LONGLONGFileSize(CStringfile)constnoexcept{HANDLEfp=CreateFile(file.GetBuffer(),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);LARGE_INTEGERinfo;memset(&info,......
  • License授权文件生成器源码
    功能介绍1.对销售后的软件或网站执行版权控制,防止被非法另行出售;2.对网站域名进行有效的管理监控,防止非法域名或未授权域名;3.防止黑客使用极端手段获取网站或程序原文件后非法部署;系统功能:1.完整版Lisence生成工具。2.对网站使用域名执行控制。3.对网站域名使用时间执行授权控制......
  • 信创文件安全传输系统,满足信创环境下的文件交换需求
    信创,全名是信息技术应用创新。过去中国IT底层标准、架构、产品、生态大多数都由美国IT巨头来制定,由此存在诸多的安全、被“卡脖子”的风险。2007年6月,美国公布了新的管制清单,规定激光器、航空发动机、先进导航系统、光学纤维、水下摄像机及推进器、先进复合材料以及高科技通信器......
  • TrueNAS core :samba文件共享设置中的:2层ACL控制机制
    如题。之所以是2层ACL,首先,复杂的权限控制场景,决定了只是用单纯的、传统的:owner、group、other:方式肯定不能胜任。其次,服务本身是分级的,samba提供的是共享服务,自身需要一套ACL控制;而samba的共享文件及文件目录资源本身是驻留在文件系统之中的——即:文件系统......
  • 上传文件转base64
    functiongetBase64(file){ returnnewPromise((resolve,reject)=>{ constreader=newFileReader(); letfileResult=""; reader.readAsDataURL(file); //开始转 reader.onload=()=>{ fileResult=reader.result; }; //转失败......
  • Qt音视频开发41-文件推流(支持网页和播放器播放并切换进度)
    一、前言本功能最初也是有一些人提过类似的需求,就是能不能将本地的音视频文件,通过纯Qt程序推流出去,然后用户可以直接在网页上播放,也可以用各种播放器播放,然后还可以任意切换播放进度,其实说白了就是个文件服务器,用户通过网络地址访问以后,告诉对方当前是媒体文件就会自动播放,是其他......
  • 使用axios下载文件
    使用axios下载文件/***下载文件*@param{string}url下载地址*@param{string}fileName文件名,例:1.png*/exportfunctiondownload(url,fileName){axios({url:url,method:'GET',responseType:'blob',}).then((r......
  • mvn命令上传分步上传jar和pom文件
    1、首先在setting.xml文件<server>配置id和用户名、密码 假如id:snapshot 2、上传pom。文件mvndeploy:deploy-file-Dfile=XX-0.0.5-SNAPSHOT.pom-DgroupId=com.XX-DartifactId=XX-Dversion=0.0.5-SNAPSHOT-Dpackaging=pom-DrepositoryId=snapshot-Durl=http://n......
  • EBS: APP-PER-50022: ORACLE 人力资源管理系统无法检索用户类型配置文件选项的值
    在PO模块设置的人员,点击“人员”功能菜单时,提示: APP-PER-50022。。。。。的错误。路径:PO》》设置》》人员。APP-PER-50022:ORACLE人力资源管理系统无法检索用户类型配置文件选项的值。请确保为您的责任正确设置此值。尝试解决方式(失败了):  PROFILE |     ......