首页 > 编程语言 >Python操作pdf文件|pdfpiumbe&PyPDF2

Python操作pdf文件|pdfpiumbe&PyPDF2

时间:2023-03-18 20:11:15浏览次数:83  
标签:pdfpiumbe Python text pages PyPDF2 PDF pdf page

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)

方法和功能:

  1. crop 主要用于裁剪页面
  2. within_bbox 类似crop,但是如果对象含有超出裁剪边框(bounding box)部分,则不包含此对象
  3. dedupe_chars 返回具有重复字符的页面版本
  4. extract_text 将 page 中的字符对象(character object)装入单个字符串(string)
  5. extract_words 提取单词,返回一个 list 返回 pdf 文件中字符的属性
  6. extracr_tables 提取表格中的内容,并转为一个list对象
  7. to_image 返回关于 PageImage 类的实例
  8. close 关闭文件

以上就是使用PDFPlumber库的基本教程。PDFPlumber库还有其他高级功能,例如提取图像和链接。可以查看官方文档以了解更多信息。

2 PyPDF2库

PyPDF2是一个纯Python库,用于处理基本的PDF文档。它允许您合并,拆分,裁剪和旋转PDF文件。

以下介绍pypdf2的3.0版本的使用。

2.1 安装PyPDF2库

在命令行中输入以下命令以安装PyPDF2库:

pip install PyPDF2

2.2 使用

  1. 导入模块
import PyPDF2 as pdf2
  1. 打开PDF文件

对于打开一个PDF文件,我们需要使用PyPDF2方法打开该文件:

# 读pdf
pdf_reader = pdf2.PdfReader(pdf_path)

要访问PDF的页面数量,请使用:

len(pdf_reader.pages)
  1. 读取PDF文本内容

要仅仅读取PDF的文本内容,可以使用以下代码:

for page in pdf_pages:
    text = page.extract_text()
    print(text)
  1. 写入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

相关文章

  • python并发编程
    1.协程示例1:importtimeimportasyncioasyncdefcrawl_page(url):print('crawling{}'.format(url))sleep_time=int(url.split('_')[-1])awaitasyncio.slee......
  • 这13个Python GUI库,正在学习Python的你必须知道
    Python是一种高级编程语言,它用于通用编程,由GuidovanRossum在1991年首次发布。Python的设计着重于代码的可读性。Python有一个非常大的标准库,并且有一个动态类型系......
  • Python3使用WOL唤醒群晖NAS
    1.pip3installwakeonlanpip3installwakeonlanLookinginindexes:https://pypi.tuna.tsinghua.edu.cn/simpleCollectingwakeonlanDownloadinghttps://pypi.t......
  • Python中TypeError: ‘str‘ object is not callable 问题的解决方法
    Python中TypeError:‘str’objectisnotcallable问题的解决方法‘str’objectisnotcallable一般出现在企图调用一个不可被调用的对象。细看了一下代码......
  • CentOS7.3 + python2.7离线安装paramiko库
    环境操作系统版本python版本CentOS7.3python2.7.5资源准备​​https://ceekay.lanzouw.com/b012qfntc​​,密码:fa68资源包版本gccpython-devel-2.7.5-89.el7.x86_64.rpmpy......
  • Python上下文管理器with的用法
    通常我们使用with关键字,作为上下文管理器进入标志。上下文管理器是一个包装任意代码块的对象,当退出上下文管理器时,保证相关的资源能够得到正确处理。最常用的用法是打......
  • 13 个非常有用的 Python 代码片段
    1:将两个列表合并成一个字典假设我们在Python中有两个列表,我们希望将它们合并为字典形式,其中一个列表的项作为字典的键,另一个作为值。这是在用Python编写代码时经常遇......
  • 100道python基础题——(6)
    编写一个程序,根据给定的公式计算并打印值:。以下是C和H的固定值:C是50。H是30。D是一个变量,它的值应该以逗号分隔的序列输入到程序中。例子假设程序的输入序列是逗号分隔的......
  • python爬取全国二手车数据,看看有没有可以捡漏的!
     絮叨一下话说,最近从湖北开始汽车价格战,全国人民都跑到湖北买车去了,搞得人家都出政策限制外地人购买了。不过12W的C6是真香呐,二十多万的C6一身毛病,12W的C6毛......
  • 100道python基础题——(5)
    Python简明教程---20,Python类中的属性与方法-码农充电站-博客园(cnblogs.com)问题:定义一个至少有两个方法的类:    getString:从控制台输入获取字符串......