本文的目的是介绍PythonPDF库的详细情况,特别关注pythonpdf库哪个好用的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解PythonPDF库的机会,同时也
本文的目的是介绍Python PDF库的详细情况,特别关注python pdf库哪个好用的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Python PDF库的机会,同时也不会遗漏关于python pdfkit 生成 PDF、python pdfminer 读取pdf文本内容、python pdfplumber用于pdf表格提取、Python PyMuPDF如何实现PDF与图片和PPT相互转换的知识。
本文目录一览:- Python PDF库(python pdf库哪个好用)
- python pdfkit 生成 PDF
- python pdfminer 读取pdf文本内容
- python pdfplumber用于pdf表格提取
- Python PyMuPDF如何实现PDF与图片和PPT相互转换
Python PDF库(python pdf库哪个好用)
有哪些Python PDF库?
我需要制作一些具有许多网格的PDF,并且我正在寻找一个可以管理页面(多页面)的库。库应计算页面何时结束,然后创建下一页。
答案1
小编典典我想到的两个是:
- pyPdf2
- PDFMiner
python pdfkit 生成 PDF
pdfkit 与 wkhtmltopdf 介绍
pdfkit
pdfkit,把 HTML+CSS 格式的文件转换成 PDF 格式文档的一种工具。
wkhtmltopdf
pdfkit 是基于 wkhtmltopdf 的 python 封装,支持 URL,本地文件,文本内容到 PDF 的转换,所以使用 pdfkit 需要下载 wkhtmltopdf。
三步实现自动生成 pdf 文档
1. 使用 pip
安装 pdfkit
库
python 版本 3.x,在命令行输入:
pip install pdfkit
wkhtmltopdf.exe
文件
下载地址:https://wkhtmltopdf.org/downloads.html
pdfkit
库生成 pdf 文件
pdfkit
可以将
网页、html 文件、字符串生成 pdf 文件。
pdfkit.from_url()
)
# 导入库
import pdfkit
''''''将网页生成pdf文件''''''
def url_to_pdf(url, to_file):
# 将wkhtmltopdf.exe程序绝对路径传入config对象
path_wkthmltopdf = r''文件路径''
config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
# 生成pdf文件,to_file为文件路径
pdfkit.from_url(url, to_file, configuration=config)
print(''完成'')
url_to_pdf(r''url'', ''输出文件名.pdf'')
html 文件生成 pdf(pdfkit.from_file()
)
# 导入库
import pdfkit
''''''将html文件生成pdf文件''''''
def html_to_pdf(html, to_file):
# 将wkhtmltopdf.exe程序绝对路径传入config对象
path_wkthmltopdf = r''文件路径''
config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
# 生成pdf文件,to_file为文件路径
pdfkit.from_file(html, to_file, configuration=config)
print(''完成'')
html_to_pdf(''html文件名.html'',''输出文件名.pdf'')
字符串生成 pdf(pdfkit.from_string())
# 导入库
import pdfkit
''''''将字符串生成pdf文件''''''
def str_to_pdf(string, to_file):
# 将wkhtmltopdf.exe程序绝对路径传入config对象
path_wkthmltopdf = r''文件路径''
config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
# 生成pdf文件,to_file为文件路径
pdfkit.from_string(string, to_file, configuration=config)
print(''完成'')
str_to_pdf(''字符串'',''输出文件名.pdf'')
python pdfminer 读取pdf文本内容
#pip3 install pdfminer tabula-py
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO
import tabula
def file(path,type):
return open(path,type)
def convert_pdf_to_txt(path,save_name):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = ''utf-8''
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
fp = file(path, ''rb'')
interpreter = PDFPageInterpreter(rsrcmgr, device)
password = ""
maxpages = 0
caching = True
pagenos=set()
for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
interpreter.process_page(page)
fp.close()
device.close()
str = retstr.getvalue()
retstr.close()
print(str)
# try:
# with open("%s"%save_name,"w") as f:#格式化字符串还能这么用!
# for i in str:
# f.write(i)
# print "%s Writing Succeed!"%save_name
# except:
# print "Writing Failed!"
#convert_pdf_to_txt(''C:\\pdf-2020-10-9\\600030_20201009_1_中信证券2020年9月证券变动月报表.pdf'',"c.txt")
python pdfplumber用于pdf表格提取
1 import pdfplumber
2
3 with pdfplumber.open(''test.pdf'') as pdf:
4 #page_count = len(pdf.pages())
5 p0 = pdf.pages[0]
6 # 获取文本,直接得到字符串,包括了换行符【与PDF上的换行位置一致,而不是实际的“段落”】
7 #print(p0.extract_text())
8 # 获取本页全部表格,也可以使用extract_table()获得单个表格
9 for table in p0.extract_tables():
10 #得到的table是嵌套list类型,转化成DataFrame更加方便查看和分析
11 for line in table:
12 print(line)
13
14 #安装ImageMagick,地址在下面
15 #http://docs.wand-py.org/en/latest/guide/install.html#install-imagemagick-on-windows
16 #https://blog.csdn.net/blmoistawinde/article/details/82051915
Python PyMuPDF如何实现PDF与图片和PPT相互转换
这篇文章主要介绍了Python PyMuPDF如何实现PDF与图片和PPT相互转换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python PyMuPDF如何实现PDF与图片和PPT相互转换文章都会有所收获,下面我们一起来看看吧。
安装与简介
安装:pip install PyMuPDF
MuPDF
MuPDF是一个轻量级的PDF、XPS和电子书查看器。MuPDF由软件库、命令行工具和各种平台的查看器组成:
支持多种文档格式:如PDF、XPS、OpenXPS、CBZ、EPUB和FictionBook 2。
命令行工具可注释、编辑文档,并将文档转换为其他格式:如HTML、SVG、PDF和CBZ。
PyMuPDF
PyMuPDF是MuPDF的Python接口库:
可访问扩展名为“.pdf”、“.xps”、“.oxps”、“.cbz”、“.fb2”或“.epub”的文档;
可像文档样处理流行图像格式:“.png”,“.jpg”,“.bmp”,“.tiff”等
对于所有支持的文档类型可以:
解密文件
访问元信息、链接和书签
以栅格格式(PNG和其他格式)或矢量格式SVG呈现页面
搜索文本
提取文本和图像
转换为其他格式:PDF, (X)HTML, XML, JSON, text
对于PDF文档,存在大量的附加功能,可以:创建、合并或拆分。页面可以通过多种方式插入、删除、重新排列或修改(包括注释和表单字段)。
可以提取或插入图像和字体
完全支持嵌入式文件
pdf文件可以重新格式化,以支持双面打印,色调分离,应用标志或水印
完全支持密码保护:解密、加密、加密方法选择、权限级别和用户/所有者密码设置
支持图像、文本和绘图的PDF可选内容概念
可以访问和修改低级PDF结构
PyMuPDF使用
通过open可打开文档(Document对象):
import fitz doc = fitz.open(filename) # ... doc.save('file') doc.close()
Document中发主要方法与属性:
方法/属性 | 描述 |
---|---|
Document.page_count | 页数 (int) |
Document.Metadata | 元数据 (dict) |
Document.get_toc() | 获取目录 (list) |
Document.load_page() | 读取页面 |
对于PDF文档,有以下页面操作方法:
删除页面:Document.delete_page()和Document.delete_pages()
复制或移动页面:Document.copy_page()、Document.fullcopy_page()和Document.move_page()
选择页面(只保留选择范围内的页面):Document.select()
插入新页:Document.insert_page()和Document.new_page(),以及Document.insert_pdf()
元数据
Document.Metadata是一个具有以下键的Python字典。
Key | Value |
---|---|
producer | producer (producing software) |
format | format: ‘PDF-1.4’, ‘EPUB’, etc. |
encryption | encryption method used if any |
author | 作者 |
modDate | 最后修改日期 |
keywords | 关键字 |
title | 标题 |
creationDate | 创建日期 |
creator | creating application |
subject | subject |
页面Page
页面是MuPDF的核心:
• 可以将页面呈现为光栅或矢量(SVG)图像,可以选择缩放、旋转、移动或剪切页面。
• 可以提取多种格式的页面文本和图像,并搜索文本字符串。
• 对于PDF文档,可以使用更多的方法向页面添加文本或图像。
从Document中获取页面,页面索引:
第一页为0;
负数表示从末尾倒数:如doc[-1]表示获取最后一页;
# pno是页面索引 page = doc.load_page(pno) # or page = doc[pno]
页面操作方法:
page.get_links()
:获取页面中的连接(返回字典);
page.annots()
:获取注释;
page.widgets()
:获取表单;
pix = page.get_pixmap()
:获取光栅图像(整个页面作为一个图像);
pix.save('page.jpg')
:保存为图像;
page.get_svg_image()
:获取矢量图像;
page.get_text(opt)
:获取文本,opt可为:
“text”:(默认)带换行符的纯文本(无格式、无文字位置详细信息、无图像);
“blocks”:生成文本块(段落)的列表;
“words”:生成单词列表(不包含空格的字符串);
“html”:创建页面的完整视觉版本,包括任何图像;
“dict”/“json”:与HTML相同的信息级别,但作为Python字典或JSON字符串。
“rawdict”/“rawjson”:“dict”/"json"的超级集合。它还提供诸如XML之类的字符详细信息。
“xhtml”:文本信息级别与文本版本相同,但包含图像。
“xml”:不包含图像,但包含每个文本字符的完整位置和字体信息,使用XML模块进行解释。
page.search_for("txt")
:搜索文本
代码示例
PDF转图片
通过get_pixmap获取每页PDF为图片,然后保存即可。其中zoom用于控制生成图片的缩放比例。
import fitz def pdf2image(pdfFile, storePath, zoom=2.0): doc = fitz.open(pdfFile) picName = os.path.splitext(os.path.basename(pdfFile))[0] index = 0 os.makedirs(storePath, exist_ok=True) images = [] print(f"To convert: {pdfFile}") for pg in range(doc.page_count): page = doc[pg] index += 1 rotate = int(0) print(f"\tconvert page {index}") # 每个尺寸的缩放系数(提高生成分辨率) zoom_x, zoom_y = zoom, zoom mat = fitz.Matrix(zoom_x, zoom_y) pm = page.get_pixmap(matrix=mat, alpha=False) imgName = '{}-{}.jpg'.format(picName, index) imgFile = os.path.join(storePath, imgName) pm.save(imgFile) images.append(imgFile) doc.close() return images
图片转PDF
把图片插入到新建页中(插入位置使用页面框,即填充整个页面)
def image2pdf(imgDir, pdfFile, width=595, height=842): doc = fitz.open() print("To convert image to PDF:") for img in sorted(glob.glob("{}/*".format(imgDir))): print(f"\tAdd image {img}") page = doc.new_page(width=width, height=height) page.insert_image(page.rect, filename=img) # 将当前页插入文档 doc.save(pdfFile) print(f"PDF save to {pdfFile}") doc.close()
PDF转PPT
转PPT时需要用到pptx库:pip install python-pptx
先把PDF转为图片,然后把每张图片生成一个幻灯片页面(PPT页面大小有width与height控制)
import fitz import pptx from pptx.util import Inches def pdf2pptx(pdfFile, pptFile, imgPath, width=10, height=7.5, zoom=2.0): images = pdf2image(pdfFile, imgPath, zoom) ppt = pptx.Presentation() for i in images: layout = ppt.slide_layouts[0] # 定义一个PPT页面样式 slide = ppt.slides.add_slide(layout) slide.shapes.add_picture( image_file=i, left=Inches(0), top=Inches(0), width=Inches(width), height=Inches(height) ) ppt.save(pptFile) shutil.rmtree(imgPath)
关于“Python PyMuPDF如何实现PDF与图片和PPT相互转换”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python PyMuPDF如何实现PDF与图片和PPT相互转换”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注小编行业资讯频道。
关于Python PDF库和python pdf库哪个好用的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于python pdfkit 生成 PDF、python pdfminer 读取pdf文本内容、python pdfplumber用于pdf表格提取、Python PyMuPDF如何实现PDF与图片和PPT相互转换等相关知识的信息别忘了在本站进行查找喔。
本文标签: