Convert PDF to Images using Python

Posted by Gloomymoon on 2016-10-27

1 Install GhostScript

GhostScript官网下载Ghostscript 9.20 for Windows(32bit)安装包,注意即便是64位的系统也请安装32位。安装完成后将%安装目录\bin加入到系统Path环境变量,如果使用默认安装的话,则添加:

1
C:\Program Files (x86)\gs\gs9.20\bin

2 Install ImageMagick

ImageMagick官网下载ImageMagick 6.9.6-2-Q16-x86 windows 32-bit安装包,安装时请选中 Install development headers and libraries for C and C++ 选项:

安装完之后需要在系统变量里新增MAGICK_HOME环境变量,设为ImageMagic安装的路径,如使用默认安装的话,则添加:
C:\Program Files (x86)\ImageMagick-6.9.6-Q16
同时也需要将该目录加入系统Path环境变量。

3 Install PythonMagic

Unofficial WIndows Binaries for Python Extension Packages页面下载与编译好的PythonMagic whl包,然后使用pip install安装,不要直接使用easy_install或pip通过在线下载安装。

4 Check if your setup works

进入命令行,在含有pdf(例如some.pdf文件的目录下输入:

1
$ convert some.pdf some.jpg

如果能够成功看到some.jpg文件生成(若pdf有多页,则会看到some-0.jpg, some-1.jpg…),若报错或者没有图片文件生成,则说前面1~3步安装有问题。

5 Convert PDF to Images using Python

在Python中可以直接使用如下代码进行转化:

1
2
3
4
from PythonMagick import Image
image = Image()
image.read(r"C:\Path\To\Some.pdf")
image.write("some.jpg")

若PDF文件有多页,可以使用如下代码(需在安装pyPdf):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import os
from pyPdf import PdfFileReader, PdfFileWriter
from tempfile import NamedTemporaryFile
from PythonMagick import Image

reader = PdfFileReader(open("C:\Path\To\Some.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)
temp.close()

im = Image()
im.density("300") # DPI, for better quality
im.read(temp.name)
im.write("some_%d.png" % (page_num))

os.remove(temp.name)

然后便可以快乐地将爬到的70+G乐高图纸转成图片进行分析了:p