当前位置: 首页 > news >正文

python 删除pdf 空白页

环境

python == 3.10
PyPDF2 ==3.0.1

安装

pip install PyPDF2

流程

  • 将空白页和内容页读取出来,看看内部结构有什么不同
  • 以此为依据,遍历整个PDF 文件,标记处有内容的页面,写入到另外一个PDF文件。

python 代码

# 每一个页都是一个字典对象,看第一层没区别
# 参考文章中 第一层 keys 一样, 但是 /Resources下结构有所不同,空白页没有"/XObject"键
# 我的第一层keys 不一样,  但是 /Resources下结构一样
# 另外 PyPDF2 版本不一样,各个模块有更新,自己看源码进行更新,或者根据报错提示进行更新from PyPDF2 import PdfReader, PdfWriterdef remove_pdf_blank_pages(path):pdfReader = PdfReader(open(path, 'rb'))writer = PdfWriter()pages = len(pdfReader.pages)# blank = pdfReader.pages[1]# full = pdfReader.pages[2]#print('*'*10)#print(blank.keys())# dict_keys(['/Type', '/Parent', '/Resources', '/MediaBox', '/Contents'])#print(full.keys())# dict_keys(['/Type', '/Parent', '/Resources', '/MediaBox', '/Annots', '/Tabs', '/StructParents', '/Contents'])#print(blank['/Resources'])#{'/Font': IndirectObject(600, 0, 139632281578944), '/XObject': {'/Im553': IndirectObject(553, 0, 139632281578944), '/Im7': IndirectObject(7, 0, 139632281578944)}, '/ProcSet': ['/PDF', '/Text', '/ImageC', '/ImageI', '/ImageB']}#print(full['/Resources'])#{'/Font': IndirectObject(600, 0, 139632281578944), '/XObject': {'/Im553': IndirectObject(553, 0, 139632281578944), '/Im7': IndirectObject(7, 0, 139632281578944)}, '/ProcSet': ['/PDF', '/Text', '/ImageC', '/ImageI', '/ImageB']}#print('*' * 10)for i in range(pages):page = pdfReader.pages[i]# if "/XObject" in page["/Resources"].keys() or "/Font" in page["/Resources"].keys():#     writer.add_page(page)if "/StructParents" in page.keys() or "/Tabs" in page.keys() or "/Annots" in page.keys():writer.add_page(page)writer.write(open(path, 'wb'))

参考

使用Python批量删除扫描PDF中的空白页

http://www.lryc.cn/news/364407.html

相关文章:

  • flutter as连接网易模拟器
  • fpga控制dsp6657上电启动配置
  • Tomcat启动闪退问题解决方法
  • 【多模态】34、LLaVA-v1.5 | 微软开源,用极简框架来实现高效的多模态 LMM 模型
  • 文件编码概念
  • uni-app(优医咨询)项目实战 - 第7天
  • 推荐系统学习 二
  • Vue——组件数据传递与props校验
  • Java 基础面试300题 (261-290)
  • 音频信号分析与实践
  • 程序媛:拽姐
  • 前端面试题日常练-day54 【面试题】
  • 054、Python 函数的概念以及定义
  • 今时今日蜘蛛池还有用吗?
  • 【一步一步了解Java系列】:重磅多态
  • 运维工具 - SFTP 和 FTP 的区别?
  • 创新入门|营销中的视频内容:不可或缺的策略
  • 《探索Stable Diffusion:AI绘画的创意之路与实战秘籍》
  • 某铁路信息中心运营监测项目
  • Threejs加载DOM+CSS到场景中,实现3D场景展示2D平面的效果
  • 本地知识库开源框架Fastgpt、MaxKB产品体验
  • 音视频开发15 FFmpeg FLV封装格式分析
  • Qt 的 d_ptr (d-pointer) 和 q_ptr (q-pointer)解析;Q_D和Q_Q指针
  • 【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
  • C++模板类与Java泛型类的实战应用及对比分析
  • 使用Qt对word文档进行读写
  • docker容器内无法使用命令问题
  • 【深度学习】安全帽检测,目标检测,Faster RCNN训练
  • IDEA2024创建maven项目
  • linux上VirtualBox使用