目录
- 前言
- 一、文本内容提取
- 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文件