首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从pdf中提取页面作为jpeg

从pdf中提取页面作为jpeg
EN

Stack Overflow用户
提问于 2017-09-12 19:44:53
回答 17查看 287.6K关注 0票数 160

在python代码中,如何有效地将某个页面保存在pdf中作为jpeg文件?(用例:我有一个python烧瓶web服务器,其中pdf-s将被上传,与每个页面对应的jpeg-s是存储的。)

这个解决方案是接近的,但问题是它没有将整个页面转换为jpeg。

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2018-02-02 12:51:34

可以使用pdf2image库。

你可以简单地用,

代码语言:javascript
复制
pip install pdf2image

安装完毕后,您可以使用下面的代码获取图像。

代码语言:javascript
复制
from pdf2image import convert_from_path
pages = convert_from_path('pdf_file', 500)

以jpeg格式保存页面

代码语言:javascript
复制
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下的最新版本,方法是:

代码语言:javascript
复制
conda install -c conda-forge poppler

注意:http://blog.alivate.com.au/poppler-windows/提供的Windows版本可达0.67,但请注意,0.68为2018年8月发布,因此您将无法获得最新的特性或bug修复。

票数 200
EN

Stack Overflow用户

发布于 2019-04-02 17:27:28

我找到了这个简单的解决方案,PyMuPDF,输出到png文件。注意,库导入为"fitz",这是它使用的呈现引擎的历史名称。

代码语言:javascript
复制
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”。如果您遇到一个函数不存在的错误,请在弃用名称下面查看。上述示例中的功能已相应更新。

票数 123
EN

Stack Overflow用户

发布于 2018-05-22 21:33:24

实际上,Python库pdf2image (在另一个答案中使用)并不对subprocess.Popen执行不仅仅是发射 pdttoppm操作,因此下面是一个直接执行该操作的简短版本:

代码语言:javascript
复制
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/

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46184239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档