在python代码中,如何有效地将某个页面保存在pdf中作为jpeg文件?(用例:我有一个python烧瓶web服务器,其中pdf-s将被上传,与每个页面对应的jpeg-s是存储的。)
这个解决方案是接近的,但问题是它没有将整个页面转换为jpeg。
发布于 2018-02-02 12:51:34
可以使用pdf2image库。
你可以简单地用,
pip install pdf2image安装完毕后,您可以使用下面的代码获取图像。
from pdf2image import convert_from_path
pages = convert_from_path('pdf_file', 500)以jpeg格式保存页面
for page in pages:
page.save('out.jpg', 'JPEG')编辑: Github pdf2image还提到它使用pdftoppm,并且需要其他安装:
pdftoppm是一款具有实际魔力的软件。它作为一个更大的包(称为波普尔 )的一部分分发。Windows用户将不得不安装Windows应用程序。Mac用户将不得不安装苹果机波普尔。Linux用户将预先安装pdftoppm和发行版(在Ubuntu和Archlinux上测试),如果没有,请运行
sudo apt install poppler-utils。
您可以使用anaconda安装Windows下的最新版本,方法是:
conda install -c conda-forge poppler注意:http://blog.alivate.com.au/poppler-windows/提供的Windows版本可达0.67,但请注意,0.68为2018年8月发布,因此您将无法获得最新的特性或bug修复。
发布于 2019-04-02 17:27:28
我找到了这个简单的解决方案,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)注意:库从使用"camelCase“改为"snake_cased”。如果您遇到一个函数不存在的错误,请在弃用名称下面查看。上述示例中的功能已相应更新。
发布于 2018-05-22 21:33:24
实际上,Python库pdf2image (在另一个答案中使用)并不对subprocess.Popen执行不仅仅是发射 pdttoppm操作,因此下面是一个直接执行该操作的简短版本:
PDFTOPPMPATH = r"D:\Documents\software\____PORTABLE\poppler-0.51\bin\pdftoppm.exe"
PDFFILE = "SKM_28718052212190.pdf"
import subprocess
subprocess.Popen('"%s" -png "%s" out' % (PDFTOPPMPATH, PDFFILE))下面是pdftoppm的(包含在一个名为poppler的包中):http://blog.alivate.com.au/poppler-windows/。
https://stackoverflow.com/questions/46184239
复制相似问题