python通过第三方库操作PDF文件的几种常见方法

 更新时间:2024年02月20日 11:24:11   作者:老朱2000  
Python是一种高级编程语言,主要用于数据分析、机器学习、图像处理等领域,在PDF文件处理方面,Python有许多强大的库和工具,这篇文章主要给大家介绍了关于python通过第三方库操作PDF文件的几种常见方法,需要的朋友可以参考下

前言

大家好,有关python操作pdf的方法,各种语言处理起来都比较麻烦,而且各种第三方库的应用场景都不同。下面说明一下python如何通过第三方库如何处理pdf文件。

一、文本内容提取

1.1、pdfplumber提取文本内容

安装pdfplumber

# 安装模块
pip install pdfplumber

pdfplumber提取PDF中文字代码思路如下

  • 利用pdfplumber打开一个 PDF 文件
  • 获取指定的页,或者遍历每一页
  • 利用.extract_text()方法提取当前页的文字
import pdfplumber
import os

path = os.getcwd()
filepath = os.path.join(path,"原则.pdf")

with pdfplumber.open(filepath) as pdf:
    for i in range(len(pdf.pages)):
        page = pdf.pages[i]
        print(page.extract_text())

1.2、pdfminer提取文本内容

安装pdfminer,注意安装顺序

pip install pdfminer3k
pip install pdfminer.six

pdfminer.six提取PDF中文字代码思路如下

  • 利用open打开一个 PDF 文件
  • 通过pdfdocument文档管理器读取pdf文件
  • 通过PDFPageInterpreter解析器文档读取
  • 通过PDFPageAggregator聚合器获取页面内容
  • 利用.get_text()方法提取当前页的文字

读取pdf内容

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument

fp = open("原则.pdf","rb")
pdfparser = PDFParser(fp)
doc = PDFDocument(pdfparser)

构造解析器和聚合器,下面这么逻辑步骤固定格式,直接这么写就可以。

from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams

#pdf资源管理器
resource = PDFResourceManager()

#参数分析器
laparam  = LAParams()

#页面聚合器
device = PDFPageAggregator(resource,laparams=laparam)

#页面解释器
interpreter  = PDFPageInterpreter(resource,device)

输出pdf内容

from pdfminer.pdfpage import PDFPage

for page in PDFPage.create_pages(doc):
    #使用页面解释器读取
    interpreter.process_page(page)
    
    #使用聚合器来获取内容
    layout = device.get_result()
    
    for out in layout:
        #需要注意的是pdf文件不仅文字,还有图片等内容,
        # 为了避免错误,我们判断是否为文本
        if(hasattr(out,'get_text')):
            print(out.get_text())

二、表格内容提取

表格内容我们也使用pdfplumber。安装过程和操作步骤也相同,提取表格,我们使用extract_table()方法提取表格内容,使用pandas.DataFrame显示内容。

import os
import pandas as pd
import pdfplumber

path = os.getcwd()

pdf = pdfplumber.open(os.path.join(path,"table.pdf"))
p0 = pdf.pages[0]
table = p0.extract_table()
df = pd.DataFrame(table[1:],columns=table[0])

print(df)

三、内容拆分

拆分和合并我们一般使用PyPDF2库

from PyPDF2 import PdfWriter,PdfReader

这里导入了两个方法:

  • PdfReader 可以理解为读取器
  • PdfWriter 可以理解为写入器
def split_pdf(infn,outfn,start,end):
    '''
    :param infn 源pdf路径
    :param outfn 目的pdf路径
    :param start 开始页面
    :param end 结束页面
    return
    '''
    pdf_output = PdfWriter()
    pdf_input = PdfReader(open(infn,"rb"))
    page_count = len(pdf_input.pages)
    
    if end  > page_count:
        end = page_counte
    
    #分割pdf页面,输出新的内容
    for i in range(start,end):
        pdf_output.add_page(pdf_input.pages[i])
    
    pdf_output.write(open(outfn,'wb'))

split_pdf("原则.pdf","原则2.pdf",5,10)

四、内容合并

这里导入了两个方法:

  • PdfReader 可以理解为读取器
  • PdfMerger可以理解为合并器
from PyPDF2 import PdfMerger,PdfReader

def merge_pdf(filenames,merge_name,password=None):
    '''
    :param filenames 传递一个文件列表
    :param merge_name 合并后的文件
    :param password 对应的密码列表
    return
    '''
    files = len(filenames)
    pdf_merge = PdfMerger(False)
    
    for i in range(files):
        pdf_reader = PdfReader(open(filenames[i],"rb"))
        if(not pdf_reader):
            return
        pdf_merge.append(pdf_reader)
    
    pdf_merge.write(open(merge_name,"wb"))

merge_pdf(['原则1.pdf','原则2.pdf'],'原则3.pdf')

五、通过命令工具生成pdf文档

可以借助命令行工具进行pdf文档的生成。wkhtmltopdf命令行和第三库pdfkit。

去网上下载wkhtmltopdf工具

# 安装pdfkit库
pip install pdfkit

5.1 网页内容生成pdf

import pdfkit

def url_to_pdf(url, to_file):
    # 将wkhtmltopdf.exe程序绝对路径传入config对象
    path_wkthmltopdf = r'D:\\tool\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'
    config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
    # 生成pdf文件,to_file为文件路径
    pdfkit.from_url(url, to_file, configuration=config)

    print('完成')

url_to_pdf('https://www.baidu.com','D:\baidu.pdf')

5.2 本地网页内容生成pdf

#避免乱码在html文件中,<meta charset="UTF-8">
def html_to_pdf(html, to_file):
    # 将wkhtmltopdf.exe程序绝对路径传入config对象
    path_wkthmltopdf = r'D:\\tool\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'
    config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
    # 生成pdf文件,to_file为文件路径
    pdfkit.from_file(html, to_file, configuration=config)

html_to_pdf('sample.html','out_2.pdf')

5.3 字符串内容生成pdf

'''将字符串生成pdf文件'''
def str_to_pdf(string, to_file):
    # 将wkhtmltopdf.exe程序绝对路径传入config对象
    path_wkthmltopdf = r'D:\\tool\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'
    config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
    # 生成pdf文件,to_file为文件路径
    pdfkit.from_string(string, to_file, configuration=config)
    print('完成')

str_to_pdf('This is test!','out_3.pdf')

总结 

到此这篇关于python通过第三方库操作PDF文件的几种常见方法的文章就介绍到这了,更多相关python操作PDF文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于PyTorch实现一个简单的CNN图像分类器

    基于PyTorch实现一个简单的CNN图像分类器

    本文记录了一个简单的基于pytorch的图像多分类器模型构造过程,参考自Pytorch官方文档、磐创团队的《PyTorch官方教程中文版》以及余霆嵩的《PyTorch 模型训练实用教程》。从加载数据集开始,包括了模型设计、训练、测试等过程。
    2021-05-05
  • Python全栈之递归函数

    Python全栈之递归函数

    这篇文章主要为大家介绍了Python递归函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • Python调用GPU算力的实现步骤

    Python调用GPU算力的实现步骤

    本文介绍了在Python中调用GPU算力的基本步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • python实现将JPG、BMP图片转化为bgr

    python实现将JPG、BMP图片转化为bgr

    这篇文章主要介绍了python实现将JPG、BMP图片转化为bgr方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • pandas DataFrame.shift()函数的具体使用

    pandas DataFrame.shift()函数的具体使用

    本文主要介绍了pandas DataFrame.shift()函数的使用,pandas DataFrame.shift()函数可以把数据移动指定的位数,有需要了解pandas DataFrame.shift()用法的朋友可以参考一下
    2021-05-05
  • python装饰器练习题及答案

    python装饰器练习题及答案

    这篇文章主要介绍了python装饰器练习题及答案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python处理Excel的14个常用操作总结

    Python处理Excel的14个常用操作总结

    在数据处理和分析的领域中,Excel是一种被广泛使用的工具,然而,通过Python处理Excel,能够更好地实现自动化和批量处理,本文为大家整理了14个Python处理Excel的常用操作,希望对大家有所帮助
    2023-12-12
  • python中split()函数的用法详解

    python中split()函数的用法详解

    Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串,这篇文章主要介绍了python中split()函数的用法详解,需要的朋友可以参考下
    2023-01-01
  • python爬虫中url管理器去重操作实例

    python爬虫中url管理器去重操作实例

    在本篇内容里小编给大家整理的是一篇关于python爬虫中url管理器去重操作实例,有需要的朋友们可以参考下。
    2020-11-11
  • Python 识别录音并转为文字的实现

    Python 识别录音并转为文字的实现

    本文主要介绍了Python 识别录音并转为文字的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论