关闭

windows下用Python把pdf文件转化为图片(png格式)

5285人阅读 评论(6) 收藏 举报
分类:

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


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

把图片转成pdf

代码如下:

#!/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的文章太少了,搜索出来的大部分有帮助的文章都是国外的,但是这些国外的帖子文章,也没有解决我的问题或者是给出有用的线索,最后还是通过自己的思考,解决了问题。

必须给自己点个赞大笑

2
0
查看评论

【Python】pdf文件逐页转图片/修改图片存储大小脚本

在项目APP开发过程中需要将pdf文件逐页转成图片,并同时修改图片的大小(磁盘大小有要求而尺寸大小不作要求),研究了一下通过Python的“PyPDF2”库(参考:http://blog.csdn.net/sweeper_freedoman/article/details/52994400)和“Py...
  • sweeper_freedoman
  • sweeper_freedoman
  • 2016-11-01 20:30
  • 2915

PDF转换成图片——11种方案

最近公司安排了个任务:要求交付一个DLL,实现【PDF转换成图片】,最好的效果是能够掌握所有源码,实在不行才交付第三方DLL。研究了6个工作日+1双休+每晚9点下班,逛遍了国内外各种论坛,还是没能成功整出源码,但发现了很多有用的工具和其他工具,在此分享给大家。 1.【iTextSharp.dl...
  • abudexiatian
  • abudexiatian
  • 2013-01-15 09:54
  • 4403

Python 将pdf转成图片

本篇文章记录如何使用python将pdf文件切分成一张一张图片,包括环境配置、版本兼容问题。 环境配置(mac)安装ImageMagickbrew install imagemagick 这里有个坑,brew安装都是7.x版本,使用wand时会出错,需要你安装6.x版本。 解决办法:1.安装6....
  • wwj_748
  • wwj_748
  • 2017-09-29 17:23
  • 1889

Python利器 PDFMiner python实现PDF转换TXT(附代码)

PDFMiner其特征有: 1、完全使用python编写。(适用于2.4或更新版本) 2、解析,分析,并转换成PDF文档。 3、PDF-1.7规范的支持。(几乎) 4、中日韩CJK语言和垂直书写脚本支持。 5、各种字体类型(Type1、TrueType、Type3,和CID)的支持。 6...
  • chen_shiqiang
  • chen_shiqiang
  • 2017-07-04 00:21
  • 2223

PDF转PNG图片

  • 2017-08-03 16:18
  • 2.86MB
  • 下载

Python 代码实现 JPG图片转PGM图片

Python 作为一门强大的语言,实现图片格式转换自然是轻轻松松了,能够实现 JPG , PNG , TIF , PGM等多种格式之间的转换。      JPG转换成PGM格式的代码如下,有需要的朋友可以参考~~     # c...
  • yangguangqizhi
  • yangguangqizhi
  • 2015-12-31 20:28
  • 2633

(7)PDFMiner提取PDF文本

PDFMiner是一个可以从PDF文档中提取信息的工具。与其他PDF相关的工具不同,它注重的完全是获取和分析文本数据。PDFMiner允许你获取某一页中文本的准确位置和一些诸如字体、行数的信息。它包括一个PDF转换器,可以把PDF文件转换成HTML等格式。它还有一个扩展的PDF解析器,可以用于除文本...
  • Fighting_No1
  • Fighting_No1
  • 2016-04-01 18:48
  • 12117

python 抓取pdf第一页为图片 (python get first page of pdf as image)

python 抓取pdf第一页为图片 (python get first page of pdf as image)
  • u013302113
  • u013302113
  • 2017-09-14 12:56
  • 145

python读取pdf文档

# -*- coding: utf-8 -*- #读取pdf文档from pdfminer.pdfparser import PDFParser,PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpr...
  • stopcpp
  • stopcpp
  • 2017-04-08 17:06
  • 1118

Python读取PDF文件

Python读取PDF文件
  • guozhenqiang19921021
  • guozhenqiang19921021
  • 2017-05-09 01:39
  • 3246
    个人资料
    • 访问:531070次
    • 积分:9079
    • 等级:
    • 排名:第2469名
    • 原创:362篇
    • 转载:14篇
    • 译文:1篇
    • 评论:137条
    博客专栏
    最新评论