python-从pdf提取页面作为jpeg

在python代码中,如何有效地将pdf中的某个页面另存为jpeg文件? (用例:我有一个python flask网络服务器,将在其中上传pdf-s,并存储与每个页面相对应的jpeg-s。)

该解决方案已经结束,但是问题在于它无法将整个页面转换为jpeg。

8个解决方案

77 votes

可以使用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也提到它使用了sudo apt install poppler-utils,并且它需要其他安装:

pdftoppm是执行实际操作的软件。 它作为更大的软件包poppler的一部分分发。   Windows用户必须为Windows安装poppler。   Mac用户必须为Mac安装poppler。   如果没有,Linux用户将在发行版中预装pdftoppm(已在Ubuntu和Archlinux上进行了测试),运行sudo apt install poppler-utils。

这是适用于Windows的正确安装:[http://blog.alivate.com.au/poppler-windows/]

Keval Dave answered 2020-01-11T04:43:21Z

15 votes

实际上,Python库pdftoppm(在其他答案中使用)不仅仅具有使用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的软件包中)的Windows安装链接:[http://blog.alivate.com.au/poppler-windows/]

Basj answered 2020-01-11T04:43:45Z

8 votes

无需在操作系统上安装Poppler。 这将起作用:

点安装魔杖

from wand.image import Image

f = "somefile.pdf"

with(Image(filename=f, resolution=120)) as source:

images = source.sequence

pages = len(images)

for i in range(pages):

n = i + 1

newfilename = f[:-4] + str(n) + '.jpeg'

Image(images[i]).save(filename=newfilename)

DevB2F answered 2020-01-11T04:44:10Z

5 votes

我找到了这个简单的解决方案PyMuPDF,输出到png文件

import fitz

pdffile = "infile.pdf"

doc = fitz.open(pdffile)

page = doc.loadPage(0) #number of page

pix = page.getPixmap()

output = "outfile.png"

pix.writePNG(output)

JJPty answered 2020-01-11T04:44:29Z

4 votes

@gaurwraith,为Windows安装poppler并使用pdftoppm.exe,如下所示:

从[http://blog.alivate.com.au/poppler-windows/]下载带有Poppler最新二进制文件/ dll的zip文件,然后解压缩到程序文件文件夹中的新文件夹。 例如:“ C:\ Program Files(x86)\ Poppler”。

将“ C:\ Program Files(x86)\ Poppler \ poppler-0.68.0 \ bin”添加到您的SYSTEM PATH环境变量。

从命令行安装pdf2image模块->“ pip install pdf2image”。

或者,如用户Basj所述,使用Python的子进程模块直接从代码中执行pdftoppm.exe。

@vishvAs vAsuki,此代码应通过子处理模块为给定文件夹中一个或多个pdf的所有页面生成所需的jpg:

import os, subprocess

pdf_dir = r"C:\yourPDFfolder"

os.chdir(pdf_dir)

pdftoppm_path = r"C:\Program Files (x86)\Poppler\poppler-0.68.0\bin\pdftoppm.exe"

for pdf_file in os.listdir(pdf_dir):

if pdf_file.endswith(".pdf"):

subprocess.Popen('"%s" -jpeg %s out' % (pdftoppm_path, pdf_file))

或使用pdf2image模块:

import os

from pdf2image import convert_from_path

pdf_dir = r"C:\yourPDFfolder"

os.chdir(pdf_dir)

for pdf_file in os.listdir(pdf_dir):

if pdf_file.endswith(".pdf"):

pages = convert_from_path(pdf_file, 300)

pdf_file = pdf_file[:-4]

for page in pages:

page.save("%s-page%d.jpg" % (pdf_file,pages.index(page)), "JPEG")

photek1944 answered 2020-01-11T04:45:16Z

0 votes

他们是一个名为pdftojpg的实用程序,可用于将pdf转换为img

您可以在这里找到代码[https://github.com/pankajr141/pdf2jpg]

from pdf2jpg import pdf2jpg

inputpath = r"D:\inputdir\pdf1.pdf"

outputpath = r"D:\outputdir"

# To convert single page

result = pdf2jpg.convert_pdf2jpg(inputpath, outputpath, pages="1")

print(result)

# To convert multiple pages

result = pdf2jpg.convert_pdf2jpg(inputpath, outputpath, pages="1,0,3")

print(result)

# to convert all pages

result = pdf2jpg.convert_pdf2jpg(inputpath, outputpath, pages="ALL")

print(result)

duck answered 2020-01-11T04:45:41Z

0 votes

我使用pdf2image的(也许)简单得多的选项:

cd $dir

for f in *.pdf

do

if [ -f "${f}" ]; then

n=$(echo "$f" | cut -f1 -d'.')

pdftoppm -scale-to 1440 -png $f $conv/$n

rm $f

mv $conv/*.png $dir

fi

done

这是循环中bash脚本的一小部分,用于使用狭窄的投射设备。每5秒钟检查一次添加的pdf文件(全部)并进行处理。这是针对演示设备的,最终转换将在远程服务器上完成。 现在可以转换为.PNG,但是.JPG也可以。

这种转换以及A4格式的过渡,显示视频,两个平滑滚动文本和一个徽标(具有三个版本的过渡),将Pi3设置为最高4x 100%cpu-load ;-)

Robert answered 2020-01-11T04:46:10Z

0 votes

from pdf2image import convert_from_path

import glob

pdf_dir = glob.glob(r'G:\personal\pdf\*') #your pdf folder path

img_dir = "G:\\personal\\img\\" #your dest img path

for pdf_ in pdf_dir:

pages = convert_from_path(pdf_, 500)

for page in pages:

page.save(img_dir+pdf_.split("\\")[-1][:-3]+"jpg", 'JPEG')

Saiprasad Bhatwadekar answered 2020-01-11T04:46:26Z

python获取pdf页面尺寸_python-从pdf提取页面作为jpeg相关推荐

  1. 用PDF编辑器有哪些方法可以提取页面?

    现在我们使用PDF文档越来越多,但是相对于Word而言,PDF的编辑会复杂一些,很多人虽然知道要用PDF编辑器修改,但是具体操作并不清楚,比如怎样提取PDF页面? 方法一:提取页面 最直接的方法当然是 ...

  2. python获取pdf页数_Python读取pdf页面的一部分

    假设您使用的是pdfminer和pypdf2,那么我假设所讨论的PDF文件是生成的PDF而不是扫描的(如您所给出的示例中所示).如果您知道以英寸为单位的列和行的大小,您可以使用^{}(完全公开:我写了 ...

  3. python提取pdf发票信息_python读取pdf(发票)

    想读取文件夹*.pdf格式的发票并写入到excel当中,当然也可以写入txt(注释代码有) 详见下面代码,代码开头有参考的几篇文章的地址 一开始用的是pdfplumber,不好用,识别率不高,后来使用 ...

  4. python获取a股数据_python获取A股数据列表的例子

    2015年的股市是当下的热门话题,同事的朋友弄了一个简单的弹股吐槽单页面单日PV就能达30W+ ,相当于本博客一年的PV量.所以站在技术角度,这里也写几篇关于股票技术面的文章.首先本篇先从获取A股列表 ...

  5. python获取局域网在线主机_python通过scapy获取局域网所有主机mac地址示例

    python通过scapy获取局域网所有主机mac地址示例 发布于 2014-10-10 20:34:48 | 607 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python ...

  6. python获取url列表参数_python 获取url中的参数列表实例

    Python的urlparse有对url的解析,从而获得url中的参数列表 import urlparse urldata = "http://en.wikipedia.org/w/api. ...

  7. python获取系统时间月份_python 取数组绝对值python获取当前日期

    今天群里一个人问了怎么获取当前时间的问题,以前接触过计算日期之差的,具体代码如下: import datetime d1=datetime.datetime(2014,3,14) d2=datetim ...

  8. python获取文件的大小_python获取文件大小

    python获取文件大小# !/usr/bin/python3.4 # -*- coding: utf-8 -*- import os # 字节bytes转化kb\m\g def formatSize ...

  9. python获取系统时间函数_Python常用时间操作总结【取得当前时间、时间函数、应用等】...

    本文实例讲述了Python常用时间操作.分享给大家供大家参考,具体如下: 我们先导入必须用到的一个module >>> import time 设置一个时间的格式,下面会用到 > ...

  10. python获取某文件路径_Python获取当前文件路径

    一. Python 获取当前文件路径方法 2. sys.path[0] 获取文件当前工作目录路径(绝对路径) sys.argv[0]|获得模块所在的路径(由系统决定是否是全名) 若显示调用python ...

最新文章

  1. 关乎每个人!2021年5月1日起实施
  2. beandefinition与beanfactory
  3. 音视频技术开发周刊 | 216
  4. Atom常用功能插件
  5. mysql查询时间出来数字_mysql查询时间出来数字的解决方法
  6. 全球金融科技发明专利排行榜(TOP20)
  7. 消息队列一直建立tcp连接_云架构那些事儿:为什么我的TCP连接建立异常?
  8. Play framework 2.0 -应用程序全局设置(转)
  9. 使用jQuery的load()进行页面模块化加载
  10. Axure|【医药、医疗】药企员工内部培训平台原型
  11. 如何解决VC 应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe问题...
  12. python爬虫从基础到实战一站式服务
  13. linux万能密码,Linux pam 后门纪录root用户密码以及设置万能密码登录root
  14. tcpclient java_以TcpClient接收消息
  15. java操作word宏
  16. wps表格打印怎么铺满a4纸
  17. NVR-网络视频录像机
  18. Shopify免费产品评价应用 Product Review安装和设置教程
  19. winds rabbitmq使用方式
  20. linux CPU 负载高问题分析方法

热门文章

  1. 论文笔记-Suppress and Balance: A Simple Gated Network for Salient Object Detection
  2. 模型复现 | YOLOR入门教程
  3. document.getElementById/Name/TagName
  4. MIPI DSI之DBI DPI含义和区别(3-1)
  5. 需求分析和常见的需求问题解决
  6. noi国家集训队论文分类
  7. 新买的电脑网速慢的解决方案
  8. 旋转增量式拉绳编码器出现故障应急处理
  9. 构建自己的 LINUX 系统(二)
  10. vue怎么给pc端浏览器设置一个最小屏幕_vue项目实现移动端适配的案例