几个关于python Pdf 技巧的分享

作者:zzxiaoma 时间:2021-11-30 11:39:58 

前言:

PyPDF2是一个纯Python的开源库,能够分割或合并PDF文件,也可以裁剪或转换PDF文件中的页面。我们还可以使用PyPDF2查看PDF文件的元信息,对PDF文件进行加密等。

PyPDF2是一个开源的库,因此在使用之前需要先安装。

pip install PyPDF2

1.读取PDF

import PyPDF2

reader = PyPDF2.PdfFileReader(open('a.pdf','rb'))
print(reader.getNumPages())

print(reader.getIsEncrypted())
print(reader.getDocumentInfo())
page = reader.getPage(8)
print(page.extractText())

首先导入PyPDF2模块,然后以二进制读模式打开a.pdf文件,并将它传递给PdfFileReader类的初始化函数。PdfFileReader的初始化函数会返回一个PdfFileReader类的对象,我们可以使用这个对象来获取PDF文件的信息。

通过getNumPages函数获取pdf的总页数,通过getIsEncrypted函数获取文件是否加密,通过getDocumentInfo函数获取文件的元数据,通过传递下标给getPage函数的方式获取PDF页面,下标从0开始,与Python内置的字符串、列表和元组等保持一致。通过PageObject类的extractText方法提取页面中的文本。从该方法的返回结果来看,提取PDF文本的效果并不理想。

2.删除pdf的某些页

思路:PyPDF2并不能直接编辑PDF文件,但是我们可以利用PyPDF2从一个PDF文档拷贝需要的页面到另一个PDF文档,通过这种迂回的方式实现编辑PDF的功能。例如删掉a.pdf中的第一页

import PyPDF2

reader = PyPDF2.PdfFileReader(open('a.pdf','rb'))
output = PyPDF2.PdfFileWriter()
for i in range(1,reader.getNumPages()):
    output.addPage(reader.getPage(i))
outputStream = open ("b.pdf","wb")
output.write(outputStream)
outputStream.close()

3.旋转页面

PageObject类中有部分方法可以修改PDF页面,其中rotateClockwiserotateCounterClockwise方法用来旋转页面。这两个方法只接受一个参数,且参数取值必须是90的倍数,表示旋转多少度。

import PyPDF2

reader = PyPDF2.PdfFileReader(open('a.pdf','rb'))
output = PyPDF2.PdfFileWriter()
page = reader.getPage(0)
page.rotateClockwise(180)
output.addPage(page)
outputStream = open ("b.pdf","wb")
output.write(outputStream)
outputStream.close()

4.合并pdf

from PyPDF2 import PdfFileMerger

merger = PdfFileMerger()

a = open("a.pdf",'rb')
b = open("b.pdf",'rb')
c = open("c.pdf",'rb')

merger.append(fileobj = a,pages = (0,3))
merger.merge(position=2,fileobj=b,pages=(0,1))
merger.append(c)
output = open("d.pdf","wb")
merger.write(output)

append方法通过fileobj参数确定要添加的PDF文件,通过pages参数指定要将哪些PDF页面添加到新的PDF文件中,并将要添加的页面添加到merger对象的末尾。merge方法相对于append方法,增加了position参数,我们可以通过position参数指定页面插人的位置。append方法和merge方法的pages参数非常灵活,该参数是一个三元组(start,stop[,step]),分别表示起点、终点和步长。我们可以通过该参数指定合并PDF文件中的页面。

来源:https://blog.51cto.com/u_3764469/5039076

标签:python,Pdf
0
投稿

猜你喜欢

  • 让Python更加充分的使用Sqlite3

    2022-06-07 05:53:21
  • python+jinja2实现接口数据批量生成工具

    2022-04-30 14:00:20
  • Python排序搜索基本算法之冒泡排序实例分析

    2023-10-18 19:27:26
  • python+PyQT实现系统桌面时钟

    2023-07-21 07:46:33
  • Python+matplotlib绘制饼图和堆叠图

    2022-11-17 05:42:40
  • python实现KNN分类算法

    2023-03-01 07:53:36
  • Python对口红进行数据分析来选定情人节礼物

    2022-01-23 07:38:08
  • 一文带你搞懂Python中的文件操作

    2023-07-20 14:00:52
  • go sync.Once实现高效单例模式详解

    2024-02-05 05:49:37
  • 基于python全局设置id 自动化测试元素定位过程解析

    2022-04-28 18:52:08
  • sql server使用公用表表达式CTE通过递归方式编写通用函数自动生成连续数字和日期

    2024-01-24 15:34:17
  • Python 实现中值滤波、均值滤波的方法

    2022-05-09 08:58:38
  • css利用锚点控制翻页

    2008-07-17 13:12:00
  • python奇偶行分开存储实现代码

    2022-01-30 09:30:24
  • Python 避免字典和元组的多重嵌套问题

    2021-01-06 00:07:26
  • python webp图片格式转化的方法

    2021-09-03 16:27:44
  • Python绘制雷达图时遇到的坑的解决

    2021-05-18 00:09:03
  • Go并发控制WaitGroup的使用场景分析

    2024-04-23 09:36:30
  • sql2008 还原数据库解决方案

    2024-01-26 07:16:59
  • Python之基础函数案例详解

    2023-07-09 19:43:24
  • asp之家 网络编程 m.aspxhome.com