python操作PDF的几种常见方法

这篇具有很好参考价值的文章主要介绍了python操作PDF的几种常见方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

一、文本内容提取

1.1、pdfplumber提取文本内容

安装pdfplumber

# 安装模块
pip install pdfplumber

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

  1. 利用pdfplumber打开一个 PDF 文件
  2. 获取指定的页,或者遍历每一页
  3. 利用.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,python办公自动化,python,pdf文章来源地址https://www.toymoban.com/news/detail-779646.html

到了这里,关于python操作PDF的几种常见方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 浏览器中把HTML转为PDF的几种方式

    操作步骤 另存为pdf 优点 简便易用: 浏览器自带的打印功能通常是用户界面友好的,不需要额外的插件或工具,用户只需点击几下即可完成转换。 跨平台支持: 大多数现代浏览器都支持这种方式,而且通常在不同操作系统上表现一致,从而实现跨平台的HTML到PDF的转换。 无

    2024年01月18日
    浏览(55)
  • ChatGPT读PDF、生成思维导图的几种方案

    大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、读书和自媒体。 日常办公,我们离不开pdf文档读取,思维导图制作,那么ChatGPT能够给我们什么帮助呢? 通常的方法是:我们可以使用ChatGPT提取PDF文件中的文本,然后进行复制、粘贴或搜索,这会极大地拖慢我

    2024年02月09日
    浏览(38)
  • vue3 实现预览pdf的几种方式(vue3-pdf, iframe流展示,vue-office/pdf)

    功能描述: 要实现菜单(二级)绑定文件,并进行预览(点击菜单即触发),支持文件上传下载(绑定菜单),文件以byte[]形式保存到数据库(至于为什么不用文件存储系统,因为这是领导定的 =,= 而且这个功能比较小,数据也不多,成本有限),同时,要解析pdf文件里的内

    2024年02月16日
    浏览(54)
  • python读取表格数据将pdf文件转excel文件最新可用方法

    【ptf】 【转换后Excel】 可用看到表格内容位置一致,转换完成 (1)安装camelot库 (2)转换代码

    2024年02月15日
    浏览(43)
  • C# 读取Excel的几种常见方式及实现步骤

    目录 1.使用 Microsoft Office Interop Excel 库 2.使用 OLEDB 数据库连接方式 3. 使用 EPPlus 库 在 C# 中,我们可以使用以下几种方式将 Excel 文件中的数据读取到 DataTable 中: 1.使用 Microsoft Office Interop Excel 库 这种方法需要安装 Microsoft Office,并且性能较低。具体实现步骤如下: 2.使用 O

    2024年02月12日
    浏览(40)
  • vue前端实现将页面显示内容生成pdf文件的几种方法,html2canvas、dom-to-image、jspdf(带分页)基本使用以及介绍

    实际开发需求:vue项目中,根据数据结构生成echarts图表组件,生成带有样式的图表以后,点击下载按钮,把图表以pdf格式的文件下载到本地 实现思路:将vue界面的echarts组件生成图片,然后使用插件将生成的图片放入pdf中,再实现pdf文件的下载 涉及框架以及插件:vue、echar

    2024年01月25日
    浏览(53)
  • Unity读取Json的几种方法

    目录 存入和读取JSON工具 读取本地Json文件 1、unity自带方法 类名:JsonUtility          序列化:ToJson()                    反序列化:FromJson()         用于接收的JSON实体类需要声明 [Serializable]  序列化 实体类中的成员变量要是字段而不是属性{get;set;} 处理数组的话,外

    2024年01月21日
    浏览(43)
  • go读取文件的几种方法

    直接将数据直接读取入内存,是效率最高的一种方式,但此种方式,仅适用于小文件,对于大文件,则不适合,因为比较浪费内存 1.直接指定文化名读取 在 Go 1.16 开始,ioutil.ReadFile 就等价于 os.ReadFile,二者是完全一致的 1.1使用os.ReadFile函数读取文件 1.2使用ioutil.ReadFile函数读

    2024年02月10日
    浏览(43)
  • 【PDFBox】PDFBox操作PDF文档之读取指定页面文本内容、读取所有页面文本内容、根据模板文件生成PDF文档

    这篇文章,主要介绍PDFBox操作PDF文档之读取指定页面文本内容、读取所有页面文本内容、根据模板文件生成PDF文档。 目录 一、PDFBox操作文本 1.1、读取所有页面文本内容 1.2、读取指定页面文本内容 1.3、写入文本内容 1.4、替换文本内容 (1)自定义PDTextStripper类 (2)创建Key

    2024年02月16日
    浏览(69)
  • 常见的异步编程的几种方法

    回调函数 Promise Rxjs 1、回调函数   2、Promise   3、Rxjs 注意:不管是通过 Promise 的 resolve返回,还是通过 getRxjsData 的 observer 返回,返回的时间用户都不能马上得到,必须分别使用 then 和 subscribe 来订阅   4、Rxjs取消订阅   5、rxjs订阅后多次执行  

    2024年01月20日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包