对于经常看扫描PDF资料的人来说,经常会碰到如下问题:

PDF缩略图

因为一些格式转换的原因,一些空白页时不时的出现,而且规律不定,一会是偶数页码一会是奇数页码,逐个选中删除的话,对于几百页的文档,非常费时。

百度搜索删除PDF空白页,得到的是一个要收费的工具,有了Python就可以利用免费开源库轻松解决。

先安装 PyPDF2库,在Powershell 或CMD命令行模式安装PyPDF2

Install PyPDF2

流程:

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

该文件中17页为空白页,18页为内容页:

from PyPDF2 import PdfFileReader, PdfFileWriter

path=r"D:\ebook\PDF\test.pdf"

reader = PdfFileReader(open(path, 'rb'))

"""

注意PyPDF2中页码从0开始

"""

blank= reader.getPage(16)

full = reader.getPage(17)

每一个页都是一个字典对象,看第一层没区别

blank.keys()

Out[24]: dict_keys(['/Type', '/Contents', '/Parent', '/Resources', '/MediaBox'])

full.keys()

Out[25]: dict_keys(['/Type', '/Contents', '/Parent', '/Resources', '/MediaBox'])

经查发现/Resources下结构有所不同,空白页没有"/XObject"键:

blank['/Resources']

Out[26]: {'/ExtGState': {'/Opa0': {'/Type': '/ExtGState', '/CA': 1}}}

full['/Resources']

Out[27]:

{'/ExtGState': {'/Opa0': {'/Type': '/ExtGState', '/CA': 1},

'/Opa1': {'/Type': '/ExtGState', '/ca': 1}},

'/XObject': {'/Image0': {'/BitsPerComponent': 8,

'/Height': 1130,

'/Filter': ['/DCTDecode'],

'/ColorSpace': '/DeviceRGB',

'/Type': '/XObject',

'/Subtype': '/Image',

'/DL': 434222,

'/Width': 792}}}

所以对于有”/XObject“键的,就是有图像的页面。同时发现一些只有文字没图像的页面,还有"/Font" 键,于是将有这两个键的页面标记,然后写入第二个PDF文件即可:

from PyPDF2 import PdfFileReader, PdfFileWriter

path = r"D:\ebook\PDF\test.pdf"

path_output = r"D:\ebook\PDF\output.pdf"

reader = PdfFileReader(open(path, 'rb'))

writer = PdfFileWriter()

pages = pdfReader.getNumPages()

for i in range(pages):

page = reader.getPage(i)

if "/XObject" in page["/Resources"].keys() or "/Font" in page["/Resources"].keys():

writer.addPage(page)

writer.write(open(path_output, 'wb'))

python 删除pdf页面_使用Python批量删除扫描PDF中的空白页相关推荐

  1. python 删除pdf页面_使用python从新生成的pdf文件中删除空白页

    使用下面的代码,我试图将图片从目录粘贴到PDF文件中.代码已经在工作,生成我的PDF几乎如我所愿.在 唯一的问题是它总是在图片之间添加空白页,我不知道为什么. 如果我执行代码,PDF将以空白页开始,然 ...

  2. python渲染html页面_在Python中使用CasperJS获取JS渲染生成的HTML内容的教

    文章摘要:其实这里casperjs与python没有直接关系,主要依赖casperjs调用phantomjs webkit获取html文件内容.长期以来,爬虫抓取 客户端javascript渲染生成的 ...

  3. python开发h5页面_使用Python的Tornado框架实现一个Web端图书展示页面

    首先,为什么选择Tornado:1.高性能的网络库,这可以和gevent,twisted,libevent等做对. 提供了异步io支持,超时事件处理,在此基础上提供了tcpserver,httpcli ...

  4. 【Python】将微信收藏的文章批量导出为pdf

    [Python]将微信收藏的文章批量导出为pdf 第一步:导出微信收藏的链接 第二步:将所有网址导出为pdf 写在前面 微信收藏了大量的文章,一直没时间看.乘飞机或火车时有闲暇时间但网络不行.本文提供 ...

  5. 怎么批量删除 Word、PDF、PPT 以及 Excel 文档中的空白页?

    概要:「我的ABC软件工具箱」提供了删除空白页的功能,轻轻松松就可以实现批量删除文档中的空白页.目前支持 Word.PDF.PPT 以及 Excel 等格式文件文件.操作非常的方便,处理也非常高效! ...

  6. JAVA删除pdf空白页_如何编辑PDF文件,如何删除PDF文档中的空白页

    时代在发展,科技在进步,我们现在日常使用的文件也发展了,以前只有Word跟TXT,现在还增加了一个PDF格式的文件,但PDF格式的文件跟Word和TXT文件不一样,Word跟TXT文件可以直接的打开编 ...

  7. PDF文件能编辑吗,怎么删除PDF文档中的空白页

    有时候我们接触的文件是PDF格式,到遇到文件中夹杂的有空白页面需要进行删除的时候,这个时候我们应该怎么操作呢,有些小伙伴不知道PDF文件能不能编辑,小编来告诉你,PDF文件是可以编辑的,但PDF文件的 ...

  8. PDF中的空白页怎么删除

    我们在使用PDF文件的时候有会遇到,文件中有多余的空白页面的时候,这个就会影响文件的使用,我们就需要把空白页面删除,那么具体的操作步骤应该怎么做呢?今天就为各位分享一下操作方法,一起来看看吧! 方法一 ...

  9. 删除在wps文档中的空白页,方便pdf输出无空白页

    解决问题 删除在wps文档中的空白页,方便pdf输出 解决思路两个 1. WPS中操作,从根上解决 2.Adobe 中对pdf操作,结果中解决 具体来讲: 1. WPS中操作,从根上解决 (1)点击& ...

最新文章

  1. Android新技术学习——阿里巴巴免Root无侵入AOP框架Dexposed
  2. python做好的程序如何变成小程序-使用python编写简单的小程序编译成exe跑在win10上...
  3. 【开发工具】SCALA
  4. github怎么删除已经发布的Releases
  5. leetcode97. 交错字符串(动态规划)
  6. React开发(277):ant design time刚进入页面时间重置
  7. php prepare 批量,PreparedStatement批处理
  8. JMeter二次开发(1)-eclipse环境配置及源码编译
  9. linux下 java 压缩文件夹,java压缩文件夹linux下乱码问题
  10. 对象关系映射文件详解
  11. In App Purchases(IAP 应用程序內购买): 完全攻略
  12. 第二次作业(时事点评)
  13. 【rviz_plugin Goal3DTools 深蓝路径规划 PluginlibFactory】
  14. 免费优惠券机器人搭建
  15. 导航路径规划之四 路径规划概述
  16. c语言杀我,ballball各位大佬救救我吧
  17. 深度学习从入门到精通——MTCNN人脸侦测算法
  18. Unity优化翻译官方文档(六) ------ CPU Usage Profiler
  19. 如何系统学习区块链技术-干货来袭
  20. BTCC Global合约公测活动正式启动!预约领取红包!

热门文章

  1. 简单易学的win10安装教程,值得收藏
  2. java五个数以升序排列,java4个数的数组排列
  3. Teambition使用教程
  4. bat脚本的常用特殊符号
  5. Vue 加载 SVG 图片文件
  6. 使用sklearn训练模型出现【DataConversionWarning: A column-vector y was passed when a 1d array was expected】
  7. 关于enq: TX - allocate ITL entry的问题分析
  8. 5g消息 服务器出错,中国移动 5G 消息被下架 官方回复技术问题
  9. 十、cocos2d-x 字体描边和制作阴影
  10. codeforces1155F Delivery Oligopoly