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

2024-03-01 0 904
目录
  • 前言
  • 一、文本内容提取
    • 1.1、pdfplumber提取文本内容
    • 1.2、pdfminer提取文本内容
  • 二、表格内容提取
    • 三、内容拆分
      • 四、内容合并
        • 五、通过命令工具生成pdf文档
          • 5.1 网页内容生成pdf
          • 5.2 本地网页内容生成pdf
          • 5.3 字符串内容生成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文件内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

          您可能感兴趣的文章:

          • Python生成pdf文件的方法
          • 一文教会你用Python读取PDF文件
          • Python提取PDF指定内容并生成新文件
          • 使用Python操作PDF文件
          • Python实现将Excel内容批量导出为PDF文件

          收藏 (0) 打赏

          感谢您的支持,我会继续努力的!

          打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
          点赞 (0)

          悠久资源 Python python通过第三方库操作PDF文件的几种常见方法 https://www.u-9.cn/jiaoben/python/180584.html

          常见问题

          相关文章

          发表评论
          暂无评论
          官方客服团队

          为您解决烦忧 - 24小时在线 专业服务