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

PageObject对象有一个rotate()方法可以用于对自身进行旋转,旋转角度取值是0、90、270、180等,即90的倍数,正数是顺时针,负数是逆时针。现在有一个需求是要把一个PDF文件的奇数页逆时针旋转90度,偶数页顺时针旋转90度。

我们可以使用rotate()方法旋转页面,所以这个问题的关键是怎么判断当前页面对应页数的奇偶呢?肯定是需要获取文档的总页数,之后遍历所有页面,把当前页数对2取余,结果为0则为偶数,否则是奇数。不过要注意,如果是使用range()方法生成下标,计算奇偶之前记得加上1,因为range()默认是从0开始的,代码如下:

  1. from PyPDF2 import PdfReader,PdfWriter
  2. reader = PdfReader"./pdf_ files/练习文档.pdf"
  3. writer = PdfWriter()
  4. for i in range(reader.getNumPages()):
  5. if (i + 1) % 2 == 0:
  6. page = reader.getPage(i).rotate(90)
  7. else:
  8. page = reader.getPage(i).rotate(-90)
  9. writer.addPage(page)
  10. with open("./pdf_ files/test.pdf","wb") as f:
  11. writer.write(f)

既然讲到这里了,那就趁机再讲一下怎么知道某个PageObject对象对应的下标。PdfReader对象有一个get_page_number()方法,调用时只要把一个PageObject对象传进去就会返回该PageObject是第几页了,所以上面的旋转需求我们也可以这样写:

  1. from PyPDF2 import PdfReader,PdfWriter
  2. reader = PdfReader"./pdf_ files/练习文档.pdf"
  3. writer = PdfWriter()
  4. for page in reader.pages:
  5. page_num = reader.get_page_number(page)
  6. page = page.rotate(90) if (page_num + 1) % 2 == 0 else page.
  7. rotate(-90)
  8. writer.addPage(page)
  9. with open("./pdf_ files/test.pdf","wb") as f:
  10. writer.write(f)