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 相关文章推荐
python错误处理详解
Sep 28 Python
非递归的输出1-N的全排列实例(推荐)
Apr 11 Python
python脚本作为Windows服务启动代码详解
Feb 11 Python
pandas使用get_dummies进行one-hot编码的方法
Jul 10 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
Jan 29 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
Pytorch 多维数组运算过程的索引处理方式
Dec 27 Python
Python-openCV读RGB通道图实例
Jan 17 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 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之字符串变相相减的代码
2007/03/19 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
如何使用php实现评委评分器
2015/07/31 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
2018/08/17 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
2018/12/04 Javascript
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
express框架下使用session的方法
2019/07/31 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
python日志logging模块使用方法分析
2019/05/23 Python
pandas.cut具体使用总结
2019/06/24 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
PyTorch的torch.cat用法
2020/06/28 Python
python 6种方法实现单例模式
2020/12/15 Python
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
美国校服网上商店:French Toast
2019/10/08 全球购物
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
节约能源标语
2014/06/17 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
专业见习报告范文
2014/11/03 职场文书
2014年接待工作总结
2014/11/26 职场文书
小学信息技术教学反思
2016/02/16 职场文书
Elasticsearch 基本查询和组合查询
2022/04/19 Python