当前位置: 首页 > 知识库问答 >
问题:

从pdf中提取页面作为jpeg

微生城
2023-03-14

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

这个解决方案很接近,但问题是它无法将整个页面转换为jpeg。

共有3个答案

毛缪文
2023-03-14

Python库pdf2image(在另一个答案中使用)实际上只不过是用子进程启动pdttopm。Popen,下面是一个直接执行的简短版本:

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的Windows安装链接(包含在名为poppler的包中):http://blog.alivate.com.au/poppler-windows/.

别俊誉
2023-03-14

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

import fitz

pdffile = "infile.pdf"
doc = fitz.open(pdffile)
page = doc.loadPage(0)  # number of page
pix = page.get_pixmap()
output = "outfile.png"
pix.save(output)
穆乐逸
2023-03-14

可以使用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 repo pdf2image还提到它使用pdftoppm并且需要其他安装:

pdftoppm是一款真正神奇的软件。它是作为名为poppler的更大软件包的一部分分发的。Windows用户必须安装适用于Windows的poppler。Mac用户必须为Mac安装poppler。Linux用户将在发行版中预装pdftoppm(在Ubuntu和Archlinux上测试),如果没有,请运行sudo apt install poppler utils。

您可以使用anaconda在Windows下安装最新版本,方法是:

conda install -c conda-forge poppler

注意:http://blog.alivate.com.au/poppler-windows/提供了高达0.67的Windows版本,但请注意,0.68是在2018年8月发布的,因此您不会获得最新的功能或错误修复。

 类似资料:
  • 我试图通过翻译在http://viralpatel.net/blogs/itext-tutorial-merge-split-pdf-files-using-itext-jar/找到的splitPDF方法,用clojure从pdf中提取单个页面 IOException流关闭java.io.FileOutputStream.WriteBytes(:-2) 这将阻止我在repl仍然打开时打开文档。一旦

  • 我正在尝试使用表单识别器-Azure认知服务从pdf文件中提取文本。我使用的是定制模型,我用我的模型训练这项服务,然后尝试提取数据。 我的PDF通常有超过1页。但是我对从第一页提取文本感兴趣。Rest所有页面没有任何重要性。 那么,有没有什么方法可以训练我的系统通过给出页码从选定的页面中提取文本? 祝好 玛杜

  • 我有一个PDF文件,我想创建两个新的文件的基础上,原来的文件。第一个新文件应该得到原始文件的第1、2和4页,第二个新文件应该得到原始文件的第3页。在PHP7.3中这样做的最好方法是什么?我在这里发现了一个旧库,但我不想把这样一个旧库添加到我的代码中。在此基础上,我找到了一些云解决方案,但这也不是我想要的。没有简单的“现代”解决方案吗?

  • 我用Adobe LiveCycle Designer创建了一个PDF表单。我现在正在努力从PDF中以编程方式提取填充后的数据。 我尝试使用poppler(qt4绑定,但我想这并不重要),但显然poppler无法处理XFA表单。虽然evince和okular能够显示表单。。。 据我所知,PDF包含一个XDP,而XDP又包含XFA表单。我的问题是,我如何从PDF中提取这些数据?

  • 我必须从PDF签名文档中提取签名字段,以创建打印签名版本。到目前为止,我已经能够使用以下iText代码恢复签名者证书、原因、签名日期和其他字段: 据我所知,PDF签名是使用iText PdfPkcs7类制作的,使用setExternalDigest方法添加在外部应用程序中创建的PKCS1字节数组。文件看起来已由外部工具正确签名和验证。 但是,打印版本所需的字段之一是“签名数字戳”,它是签名文档哈希

  • 问题内容: 我目前正在使用iText,我想知道是否可以从PDF文件删除页面? 我已经用阅读器等打开了它,我想先删除一个页面,然后再将其保存回新文件。我怎样才能做到这一点? 问题答案: “删除”页面的“更好”方式正在 这意味着我们只会选择1-5、10-12页,有效地“删除” 6-9页。