当前位置:  首页>> 技术小册>> Python与办公-玩转PDF

要操作一个文档,则操作它的页面是不可缺少的常规操作,第一件事就是获取页面。
在pypdf2中,一个页面即一个PageObject对象,我们可以访问PdfReader对象的pages属性获取所有页面,然后再遍历一下所有页面即可获取每一个页面,代码如下:

  1. from PyPDF2 import PdfReader
  2. reader = PdfReader("./pdf_ files/test.pdf")
  3. for page in reader.pages:
  4. print(type(page)) # <class 'PyPDF2._page.PageObject'>

如果想要指定某个页面,PdfReader对象还提供了getPage()方法,参数是页面的索引,为了避免索引越界,我们可以使用len(reader.pages)查看一共有多少个页面,也可以调用PdfReader对象的getNumPages()方法,代码如下:

  1. from PyPDF2 import PdfReader
  2. reader = PdfReader("./pdf_ files/test.pdf")
  3. print(reader.getNumPages()) # 输出:2
  4. page = reader.getPage(0)
  5. print(type(page)) # 输出:<class 'PyPDF2._page.PageObject'>

保存页面

读取到页面之后,我们就可以调用PdfWriter对象的addPage()方法保存页面了,参数就传入一个PageObject对象就行。这个PageObject对象可以从上一步的getPage()方法获得或者遍历pages属性获取。

比如说,我们要读取一个PDF文档,将它的前2页取出来,保存为一个新的PDF文档,当然,直接覆盖原文档也没问题,但不建议这么做,代码如下:

  1. from PyPDF2 import PdfWriter,PdfReader
  2. writer = PdfWriter()
  3. reader = PdfReader"./pdf_ files/测试文档1.pdf"
  4. for page in reader.pages[:2]:
  5. writer.addPage(page)
  6. with open("./pdf_ files/test.pdf","wb") as f:
  7. writer.write(f)

这里采取的是访问PdfReader对象的pages属性的方式,主要是因为可迭代对象可以使用切片,这样即使原文档的页数小于2也不会报错。

如果你使用getPage()方法获取页面,在调用之前一定要先判断索引会不会越界,具体写法就不演示了,毕竟这些都是很基础的Python语法,如果还没掌握基础的话,就花点时间翻回Python基础部分耐心学习一下吧。


该分类下的相关小册推荐: