Python操作pdf文件
1 pdfpiumber库
pdfpiumber
是一个免费、开源的Python库,用于提取PDF文件中的文本和表格数据。它包括一个PDF解析器,可以找到和提取PDF文档中的文本和表格数据。
1.1 安装pdfplumber库
在命令行中输入执行
pip install pdfplumber
1.2 简单使用
import pdfplumber
# pdf文件
pdf_path = './data/1.pdf'
with pdfplumber.open(pdf_path) as pdf:
# 查看所有的页
print(pdf.pages)
# 遍历每一页pdf page
for page in pdf.pages:
# 提取文字
text = page.extract_text()
# 提取表格内容
tabel = page.extract_table()
# 获取pdf页面的大小
bbbox = page.bbox
print(text)
print(tabel)
print(bbbox)
方法和功能:
- crop 主要用于裁剪页面
- within_bbox 类似crop,但是如果对象含有超出裁剪边框(bounding box)部分,则不包含此对象
- dedupe_chars 返回具有重复字符的页面版本
- extract_text 将 page 中的字符对象(character object)装入单个字符串(string)
- extract_words 提取单词,返回一个 list 返回 pdf 文件中字符的属性
- extracr_tables 提取表格中的内容,并转为一个list对象
- to_image 返回关于 PageImage 类的实例
- close 关闭文件
以上就是使用PDFPlumber库的基本教程。PDFPlumber库还有其他高级功能,例如提取图像和链接。可以查看官方文档以了解更多信息。
2 PyPDF2库
PyPDF2是一个纯Python库,用于处理基本的PDF文档。它允许您合并,拆分,裁剪和旋转PDF文件。
以下介绍pypdf2的3.0版本的使用。
2.1 安装PyPDF2库
在命令行中输入以下命令以安装PyPDF2库:
pip install PyPDF2
2.2 使用
- 导入模块
import PyPDF2 as pdf2
- 打开PDF文件
对于打开一个PDF文件,我们需要使用PyPDF2方法打开该文件:
# 读pdf
pdf_reader = pdf2.PdfReader(pdf_path)
要访问PDF的页面数量,请使用:
len(pdf_reader.pages)
- 读取PDF文本内容
要仅仅读取PDF的文本内容,可以使用以下代码:
for page in pdf_pages:
text = page.extract_text()
print(text)
- 写入PDF文件
使用以下代码打开一个新的PDF文件:
# pdf编写器
pdf_write = pdf2.PdfWriter()
可以写入文本和图像,使用以下代码:
# 添加页
pdf_writer.addPage(page)
我们可以通过 PdfWriter
来创建一个新的PDF,将文本和图像添加到新的PDF中:
new_file = open('new_file_name.pdf', 'wb')
pdf_writer.write(new_file)
new_file.close()
以上是使用PyPDF2库的基本讲解。使用PyPDF2,你可以在Python代码中处理PDF文件。 PyPDF2也有一些高级功能,例如将PDF拆分为多个文件,添加密码保护等。
2.3 代码案例
2.3.1 拆分pdf
import PyPDF2 as pdf2
pdf_path = './data/企业注册登记表.pdf'
# 1 读pdf
pdf_reader = pdf2.PdfReader(pdf_path)
# 2 获取所有页
pdf_pages = pdf_reader.pages
# 3 获取每一页的pdf文本信息
for page in pdf_pages:
# 提取文本
text = page.extract_text()
print(text)
# 4 拆分pdf 每一页写入一个pdf中
for i, page in enumerate(pdf_pages):
# pdf编写器
pdf_write = pdf2.PdfWriter()
# 添加页 pdf_write.add_page(page)
pdf_write.add_page(pdf_reader.pages[i])
with open(f'./{i + 1}.pdf', 'wb') as f:
# 写入文件
pdf_write.write(f)
2.3 2 合并pdf
import pathlib
import PyPDF2 as pdf2
pdf_files = pathlib.Path('./data').rglob('*.pdf')
pdf_merger = pdf2.PdfMerger()
for pdf in pdf_files:
# 下面两行代码效果一样
pdf_merger.append(pdf)
# pdf_merger.append(pdf2.PdfReader(pdf))
with open('./合并.pdf', 'wb') as f:
pdf_merger.write(f)
PdfMerger.append方法:
@deprecation_bookmark(bookmark="outline_item", import_bookmarks="import_outline")
def append(
self,
fileobj: Union[StrByteType, PdfReader, Path],
outline_item: Optional[str] = None,
pages: Union[
None, PageRange, Tuple[int, int], Tuple[int, int, int], List[int]
] = None,
import_outline: bool = True,
) -> None:
所以使用PdfMerger中的append方法时,可以直接传入pdf文件的路径,二进制内容和pdf读取器(StrByteType, PdfReader, Path)
标签:pdfpiumbe,Python,text,pages,PyPDF2,PDF,pdf,page From: https://www.cnblogs.com/itelephant/p/17231632.html