Python提取pdf所有页面为图片(PyPDF2 + PhthonMagick + GS方法)

2023-11-18

主要参考 https://blog.csdn.net/sweeper_freedoman/article/details/53000145

以下是在Python3.6 64位环境下(Anaconda3安装的)操作

1) 下载PyPDF2源代码,再 pythonsetup.py install 安装源代码

2) 下载PythonMagick的安装包 再pip install 安装包 http://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonmagick 

3) 没安装gs会提示 RuntimeError: python.exe: PostscriptDelegateFailed `test.pdf': No such file or directory @error/pdf.c/ReadPDFImage/713

4) 安装了gs 还有一个错误 

RuntimeError: Magick: UnableToOpenConfigureFile `delegates.xml' @warning/configure.c/GetConfigureOptions/712

 gs下载地址: https://www.ghostscript.com/download/gsdnld.html

5)针对'delegates.xml', 参考https://blog.csdn.net/sqlserverdiscovery/article/details/51425543

改成

    im = PythonMagick.Image(pdffilename + '[' + str(p) +']')  

    im.density('300')  

     im.write('file_out-' + str(p)+ '.png')  

但是这个时候 im.density('300')设置图像300的dpi的根本没生效,图像保存的尺寸都很小,貌似默认是72dpi的

6)  ★★★★ 后来试出这个方法,  try except 就所有pdf的第一张page会报错,后面的都OK

for p in range(npage): 

    #不加 try except 会报错: RuntimeError: Magick:UnableToOpenConfigureFile `delegates.xml' @warning/configure.c/GetConfigureOptions/712

    try:

        im =PythonMagick.Image() 

       im.density('300')  #设置dpi,不设置估计就96dpi

        im.read(pdffilename+ '[' + str(p) +']') 

        im.write('file_out-'+ str(p)+ '.png') 

    except Exception aserr:    

       print("PythonMagick 产生错误:",end=''),print(err);               

        continue

 7) 目前测试了270份pdf,有6份pdf提取不出图片,部分pdf提取的图片会出现一个大黑块(貌似这种情况下的页面是文本格式的,不是图像格式的页面)

 

主要参考https://blog.csdn.net/sweeper_freedoman/article/details/53000145

次考参考https://blog.csdn.net/sqlserverdiscovery/article/details/51425543 

顺便说下,ImageMagick给保存jpg图片质量提供的默认值是92
详情请移步这个网址 http://www.imagemagick.org/script/command-line-options.php#quality
https://segmentfault.com/q/1010000000593681


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python提取pdf所有页面为图片(PyPDF2 + PhthonMagick + GS方法) 的相关文章

随机推荐

  • Cannot resolve com.sun:tools:1.8

    问题描述 使用druid编译的时候说找不到这个包 解决过程 首先定位原因 通过pom可以找到对应的位置 报的是这个包找到不到 于是我也尝试着更换openjdk 但是还是不行 这两个包是在jdk当中的lib目录下 针对于这个问题一共有4个处理
  • 第十八天---IPV6

    链路聚合 可以将多个物理接口捆绑成一个逻辑接口 即将N条物理链路聚合为一条逻辑链路 可以在不升级硬件的条件下 达到增加带宽的效果 我们将逻辑链路 称为聚合链路 在华为设备中称为ETH TRUNK链路 这个技术是针对以太网技术设计的 我们将每
  • C语言-编译过程与内存分配

    一 编译过程 1 预编译 预处理 预处理过程实质上是处理 将 include包含的头文件直接拷贝到hell c当中 将 define定义的宏进行替换 同时将代码中没用的注释部分删除等 具体做的事儿如下 1 将所有的 define删除 并且展
  • 09 插件开发快速入门

    V5标准架构模型 V5平台基于三层模型开发 下面是相关架构图 建议认真阅读业务流向 入门 字符集 为了实现国际化编程 全局要求使用UTF 8的字符集编码 包括 数据库 参考安装维护手册配置字符集 文件 java properties jsp
  • Linux命令基础

    一 Linux命令新手 cd 意思是到上一级目录 cd 意思是返回到上次的目录 类似windows返回 cd 意思是回到根目录 1 增 使用mkdir 命令创建文件夹 先使用命令 cd home 意思是打开home目录 再使用命令 ls 意
  • oracle数据库 创建用户 并授权访问

    oracle数据库 创建用户 并授权访问 create user USER TEST 1 identified by USER TEST 1 创建用户 设置密码 grant connect to USER TEST 1 授权 连接 gran
  • 零经验也可以入职大厂吗,毕业生的第一份实习如何成功逆袭?

    很多小伙伴在找实习的时候都遇到了一个拷问灵魂深处的问题 第一次找实习 面试官嫌弃没有相关经验 应该怎么办 不管是刚回国的留学生还是没有经验的大二大三在校学生 在找实习的时候 很多企业连一个 第一次 的机会都不会给 在筛选简历时直接pass掉
  • Android实现支付宝支付遇到的问题记录--主要是和服务器的合作上

    一 已解决 1 客户端需要处理的很简单 跟服务器接口要带有签名的商品信息 即支付宝api需要的入参 2 服务器的联合排查工作 由于服务器工作较忙 需要联合定位 且自己对php不了解 过程比较头疼和耗时 主要出现两个问题 1 ALI64 解决
  • IOS开发笔记 - 基于wsdl2objc调用webservice

    为了方便在ios下调用webserivce 找来了wsdl2objc这样一个开源的框架来解析webservice方便在ios下引用 下面做个小例子 1 首先是用Asp net搭建一个测试的webserivce并放在IIS服务器上面 核心代码
  • Android篇——使用第三方视频框架GSYVideoPlayer时,报错:the sensor listeners size has exceeded the maximum limit 128

    背景 在列表 ListView RecyclerView 中使用GSYVideoPlayer播放视频时 闪退报错the sensor listeners size has exceeded the maximum limit 128 原因是
  • MySQL基础篇--自用笔记

    MySQL基础篇 数据库相关概念 名称 全称 简称 数据库 存储数据的仓库 数据是有组织的进行存储 DataBase DB 数据库管理系统 操纵和管理数据库的大型软件 DataBase Management System DBMS SQL
  • QT中使用 QProcess接口 执行 fmmpeg命令,实现简单的音视频处理

    QProcess 介绍 QProcess 是 Qt 框架中用于启动外部进程和与之进行交互的类 它提供了一个方便的接口 允许你执行外部命令并捕获其输出 错误信息以及监控其运行状态 通过使用 QProcess 类 你可以在你的 Qt 应用程序中
  • 安装程序的原理与制作

    安装程序其实很简单 但却是很多软件特别是商业软件不可缺少的重要组成部分 在linux这个开源的世界中大部分软件都是源码发布的 下载下来一个configure make make install就完事了 在或者在不同平台上达成rpm或者deb
  • 如何用Python实现支持向量机(SVM)?

    SVM支持向量机是建立于统计学习理论上的一种分类算法 适合与处理具备高维特征的数据集 SVM算法的数学原理相对比较复杂 好在由于SVM算法的研究与应用如此火爆 CSDN博客里也有大量的好文章对此进行分析 下面给出几个本人认为讲解的相当不错的
  • 在IDEA中使用Scala

    1 本地下载Scala安装包 解压到指定路径 2 配置环境变量 1 新增系统环境变量 此电脑 右键 属性 高级系统设置 环境变量 系统变量 新建 SCALA HOME 2 配置PATH环境变量新增 SCALA HOME bin 3 配置CL
  • 进程的描述与组织

    1 1 1进程的资源 进程需要一定资源才能运行 最重要的资源是内存地址空间 此外还可能需要使用文件 设备等 这些资源均由内核负责管理和分配 分配给进程的资源登记在进程的PCB中 1 进程的地址空间 进程的一个重要构成成分是进程映像 即进程所
  • VS CODE 配色HBuilderX 雅蓝主题

    VS CODE 自配色HBuilderX 雅蓝主题 VS CODE 和 HBuilderX都是优秀的前端编辑器 对于个人而言 喜欢code 的插件和功能 喜欢HBuilderX的雅蓝主题UI 那怎么办呢 网上找了很久也只找到一篇code别的
  • 基础算法【算法习题及模板】下

    目录 前缀和与差分 前缀和 子矩阵的和 差分 差分矩阵 双指针算法 最长连续不重复子序列 数组元素的目标和 判断子序列 位运算 二进制中1的个数 离散化 区间和 区间合并 前缀和与差分 前缀和 输入一个长度为n的整数序列 接下来再输入 m个
  • ubuntu 防火墙简单设置攻略

    ufw是一个主机端的iptables类防火墙配置工具 比较容易上手 一般桌面应用使用ufw已经可以满足要求了 安装方法 sudo apt get install ufw 当然 这是有图形界面的 比较简陋 在新立得里搜索gufw试试 使用方法
  • Python提取pdf所有页面为图片(PyPDF2 + PhthonMagick + GS方法)

    主要参考 https blog csdn net sweeper freedoman article details 53000145 以下是在Python3 6 64位环境下 Anaconda3安装的 操作 1 下载PyPDF2源代码 再