windows下Python实现将pdf文件转化为png格式图片的方法


Posted in Python onJuly 21, 2017

本文实例讲述了windows下Python实现将pdf文件转化为png格式图片的方法。分享给大家供大家参考,具体如下:

最近工作中需要把pdf文件转化为图片,想用Python来实现,于是在网上找啊找啊找啊找,找了半天,倒是找到一些代码。

1、第一个找到的代码,我试了一下好像是反了,只能实现把图片转为pdf,而不能把pdf转为图片。。。

参考链接:https://zhidao.baidu.com/question/745221795058982452.html

代码如下:

#!/usr/bin/env python
import os
import sys
from reportlab.lib.pagesizes import A4, landscape
from reportlab.pdfgen import canvas
f = sys.argv[1]
filename = ''.join(f.split('/')[-1:])[:-4]
f_jpg = filename+'.jpg'
print f_jpg
def conpdf(f_jpg):
 f_pdf = filename+'.pdf'
 (w, h) = landscape(A4)
 c = canvas.Canvas(f_pdf, pagesize = landscape(A4))
 c.drawImage(f, 0, 0, w, h)
 c.save()
 print "okkkkkkkk."
conpdf(f_jpg)

2、第二个是文章写的比较详细,可惜的是linux下的代码,所以仍然没用。

3、第三个文章指出有一个库PythonMagick可以实现这个功能,需要下载一个库 PythonMagick-0.9.10-cp27-none-win_amd64.whl 这个是64位的。

这里不得不说自己又犯了一个错误,因为自己从python官网上下载了一个python 2.7,以为是64位的版本,实际上是32位的版本,所以导致python的版本(32位)和下载的PythonMagick的版本(64位)不一致,弄到晚上12点多,总算了发现了这个问题。。。

4、然后,接下来继续用搜索引擎搜,找到很多stackoverflow的问题帖子,发现了2个代码,不过要先下载PyPDF2以及ghostscript模块。

先通过pip来安装 PyPDF2、PythonMagick、ghostscript 模块。

C:\Users\Administrator>pip install PyPDF2
Collecting PyPDF2
 Using cached PyPDF2-1.25.1.tar.gz
Installing collected packages: PyPDF2
 Running setup.py install for PyPDF2
Successfully installed PyPDF2-1.25.1
You are using pip version 7.1.2, however version 8.1.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
C:\Users\Administrator>pip install C:\PythonMagick-0.9.10-cp27-none-win_amd64.whl
Processing c:\pythonmagick-0.9.10-cp27-none-win_amd64.whl
Installing collected packages: PythonMagick
Successfully installed PythonMagick-0.9.10
You are using pip version 7.1.2, however version 8.1.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
C:\Users\Administrator>pip install ghostscript
Collecting ghostscript
 Downloading ghostscript-0.4.1.tar.bz2
Requirement already satisfied (use --upgrade to upgrade): setuptools in c:\python27\lib\site-packages (from ghostscript)
Installing collected packages: ghostscript
 Running setup.py install for ghostscript
Successfully installed ghostscript-0.4.1
You are using pip version 7.1.2, however version 8.1.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

下面是代码

代码1:

import os
import ghostscript
from PyPDF2 import PdfFileReader, PdfFileWriter
from tempfile import NamedTemporaryFile
from PythonMagick import Image
reader = PdfFileReader(open("C:/deep.pdf", "rb"))
for page_num in xrange(reader.getNumPages()):
 writer = PdfFileWriter()
 writer.addPage(reader.getPage(page_num))
 temp = NamedTemporaryFile(prefix=str(page_num), suffix=".pdf", delete=False)
 writer.write(temp)
 print temp.name
 tempname = temp.name
 temp.close()
 im = Image(tempname)
 #im.density("3000") # DPI, for better quality
 #im.read(tempname)
 im.write("some_%d.png" % (page_num))
 os.remove(tempname)

代码2:

import sys
import PyPDF2
import PythonMagick
import ghostscript
pdffilename = "C:\deep.pdf"
pdf_im = PyPDF2.PdfFileReader(file(pdffilename, "rb"))
print '1'
npage = pdf_im.getNumPages()
print('Converting %d pages.' % npage)
for p in range(npage):
 im = PythonMagick.Image()
 im.density('300')
 im.read(pdffilename + '[' + str(p) +']')
 im.write('file_out-' + str(p)+ '.png')
 #print pdffilename + '[' + str(p) +']','file_out-' + str(p)+ '.png'

然后执行时都报错了,这个是 代码2 的报错信息:

Traceback (most recent call last):
 File "C:\c.py", line 15, in <module>
 im.read(pdffilename + '[' + str(p) +']')
RuntimeError: pythonw.exe: PostscriptDelegateFailed `C:\DEEP.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/713

总是在上面的     im.read(pdffilename + '[' + str(p) +']') 这一行报错。

于是,根据报错的信息在网上查,但是没查到什么有用的信息,但是感觉应该和GhostScript有关,于是在网上去查安装包,找到一个在github上的下载连接,但是点进去的时候显示无法下载。

最后,在csdn的下载中找到了 这个文件:GhostScript_Windows_9.15_win32_win64,安装了64位版本,之后,再次运行上面的代码,都能用了。

不过代码2需要做如下修改,不然还是会报 No such file or directory @ error/pdf.c/ReadPDFImage/713 错误:

#代码2
import sys
import PyPDF2
import PythonMagick
import ghostscript
pdffilename = "C:\deep.pdf"
pdf_im = PyPDF2.PdfFileReader(file(pdffilename, "rb"))
print '1'
npage = pdf_im.getNumPages()
print('Converting %d pages.' % npage)
for p in range(npage):
 im = PythonMagick.Image(pdffilename + '[' + str(p) +']')
 im.density('300')
 #im.read(pdffilename + '[' + str(p) +']')
 im.write('file_out-' + str(p)+ '.png')
 #print pdffilename + '[' + str(p) +']','file_out-' + str(p)+ '.png'

这次有个很深刻的体会,就是解决这个问题过程中,大部分时间都是用在查资料、验证资格资料是否有用上了,搜索资料的能力很重要。

而在实际搜索资料的过程中,国内关于PythonMagick的文章太少了,搜索出来的大部分有帮助的文章都是国外的,但是这些国外的帖子文章,也没有解决我的问题或者是给出有用的线索,最后还是通过自己的思考,解决了问题。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 Python
python常规方法实现数组的全排列
Mar 17 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
Python实现决策树C4.5算法的示例
May 30 Python
python爬取网页转换为PDF文件
Jun 07 Python
对numpy中shape的深入理解
Jun 15 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
python3实现带多张图片、附件的邮件发送
Aug 10 Python
为什么说Python可以实现所有的算法
Oct 04 Python
在python中使用pyspark读写Hive数据操作
Jun 06 Python
详解python安装matplotlib库三种失败情况
Jul 28 Python
python僵尸进程产生的原因
Jul 21 #Python
python下载图片实现方法(超简单)
Jul 21 #Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
Jul 20 #Python
Python使用内置json模块解析json格式数据的方法
Jul 20 #Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 #Python
Python函数式编程
Jul 20 #Python
python 换位密码算法的实例详解
Jul 19 #Python
You might like
一个php作的文本留言本的例子(六)
2006/10/09 PHP
BBS(php &amp; mysql)完整版(八)
2006/10/09 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
JavaScript 中的 this 简单规则
2017/09/19 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
详解Python中的__init__和__new__
2014/03/12 Python
python处理html转义字符的方法详解
2016/07/01 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
python的pip有什么用
2020/06/17 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
世界经理人咨询有限公司面试
2014/09/23 面试题
自荐信模版
2013/10/24 职场文书
实习生体会的自我评价范文
2013/11/28 职场文书
《郑和远航》教学反思
2014/04/16 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
化工工艺设计求职信
2014/06/25 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
2014年团支部工作总结
2014/11/17 职场文书