从pdf中提取一页作为jpeg文件
从pdf中提取一页作为jpeg文件
在Python代码中,如何高效地将PDF的某一页保存为JPEG文件?
使用情况:我有一个Python Flask Web服务器,PDF将被上传并存储对应每个页面的JPEG。
这个解决方案很接近,但问题在于它没有将整个页面转换为JPEG。
admin 更改状态以发布 2023年5月23日
我发现了这个简单的解决方案,PyMuPDF,可以输出为png文件。请注意,库被导入为“fitz”,这是它使用的渲染引擎的历史名称。
import fitz pdffile = "infile.pdf" doc = fitz.open(pdffile) page = doc.load_page(0) # number of page pix = page.get_pixmap() output = "outfile.png" pix.save(output) doc.close()
注意:该库已从使用“camelCase”更改为“snake_cased”。如果遇到不存在的函数错误,请查看弃用名称。以上示例中的函数已相应更新。
fitz.Document
类支持上下文管理器初始化:
with fitz.open(pdffile) as doc: ...
pdf2image库可以用于转换PDF为图片。
你可以通过简单的安装实现:
pip install pdf2image
安装完成后,你可以使用以下代码获取图片:
from pdf2image import convert_from_path pages = convert_from_path('pdf_file', 500)
将页面以JPEG格式保存
for count, page in enumerate(pages): page.save(f'out{count}.jpg', 'JPEG')
编辑:Github代码库pdf2image还提到它使用了pdftoppm
并且需要安装其他软件:
pdftoppm是完成转换的软件实体,它是作为更大的软件包poppler的一部分分发的。
Windows用户需要安装Windows版poppler。
Mac用户需要安装Mac版poppler。
Linux用户如果未预装pdftoppm,则可以通过运行sudo apt install poppler-utils
来完成安装(在Ubuntu和Archlinux上已测试)。
你可以通过anaconda在Windows上安装最新版本:
conda install -c conda-forge poppler
注意:可在此处获取最高0.67版本的Windows版,但请注意,0.68于2018年8月发布,所以您将无法获取最新功能或错误修复。