大家好,有关python操作pdf的方法,各种语言处理起来都比较麻烦,而且各种第三方库的应用场景都不同。下面说明一下python如何通过第三方库如何处理pdf文件。
安装pdfplumber
# 安装模块 pip install pdfplumber
pdfplumber提取PDF中文字代码思路如下
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())
安装pdfminer,注意安装顺序
pip install pdfminer3k pip install pdfminer.six
pdfminer.six提取PDF中文字代码思路如下
读取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
这里导入了两个方法:
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)
这里导入了两个方法:
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文档的生成。wkhtmltopdf命令行和第三库pdfkit。
去网上下载wkhtmltopdf工具
# 安装pdfkit库 pip install pdfkit
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')
#避免乱码在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')
'''将字符串生成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文件内容请搜索插件窝以前的文章或继续浏览下面的相关文章希望大家以后多多支持插件窝!