使用magick.net将pdf转换为图片
现在手上有个需求是要将pdf转换为一页一页的image.最开始找到的是pdfbox来处理pdf的.在pdfbox.apache.org的官网首页写了一句’convert you pdfs to image files’.所以最开始就使用pdfbox来作为转换库.但是在后面却发现出现了一个问题.由于暂时解决不了,发现了magick
这个东西.可以用来处理100多种图片格式,并且提供了各种语言的api.
###下载magick.net
ImageMagick http://www.imagemagick.org/
.net上官网提供了两个类库 magick.net
和imagemagickapp
.我选择了magick.net
这个库.下载地址
http://magick.codeplex.com/releases/view/137513
下载 Magick.NET-7.0.0.0007-Q16-AnyCPU-net40-client.zip
其中下载的时候最好选择AnyCPU的库,在vs编译的时候不需要考虑平台性的问题.Q8 Q16 q16-HDRI分别表示8位 16位和32位的.可以根据需要选择不同版本的库.
###下载安装ghostscript
根据自己的需要在ghostscript.com选择下载32位或64位的库.下载地址如下:
如果不安装ghostscript,magick.net在执行Read函数读取pdf时会报如下错误.
1 | iisexpress.exe: FailedToExecuteCommand `"gswin32c.exe" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r300x300" "-sOutputFile=C:/Users/ZHANGW~1/AppData/Local/Temp/magick-10612rmwPHf2ITKBB%d" "-fC:/Users/ZHANGW~1/AppData/Local/Temp/magick-10612_fb2bvFOsIGG" "-fC:/Users/ZHANGW~1/AppData/Local/Temp/magick-10612Pg1c2Td4S-bk"' (ϵͳ�Ҳ���ָ�����ļ��� ) @ error/delegate.c/ExternalDelegateCommand/459 |
下载安装 Visual C++ Redistributable for Visual Studio
.NET 4.0: Visual C++ Redistributable for Visual Studio 2012
.NET 2.0: Visual C++ Redistributable for Visual Studio 2008 x64 ro x86
由于开发是在vs的环境,所以不需要安装这步.在部署的时候忘了这步,导致程序一直报错找不到magick-xxx.dll
.以为是环境的原因,错误的在编译环境上折腾了很久.
生成image
在工程中引用Magick.net.当然也可以使用nuget来引入.转换代码如下,filepath为pdf的路径.
1 | MagickReadSettings settings = new MagickReadSettings(); |
这里转换就完成了.
###IKVM和pdfbox生成的问题
最开始我是使用pdfbox来生成的.代码如下:
1 | PDDocument doc = PDDocument.load(this._path); |
运行的时候在下面这行代码中出错了.
java.awt.image.BufferedImage image = pdfPage.convertToImage();
原因是IKVM.GNU.Classpath对awt和Swing实现不完整.导致了错误.当然如果不需要使用awt和Swing的库.使用.net来调用java库IKVM还是能够解决一些问题的.
###其他
PDFsharp http://pdfsharp.net/wiki/PDFsharpFAQ.ashx
itextsharp http://itextsharp.sourceforge.net/
ImageMagick http://www.imagemagick.org/
http://magick.codeplex.com/
http://magick.codeplex.com/releases/view/137513
imageMagick 的另一个.net api实现 http://sourceforge.net/projects/imagemagickapp/
使用magick.net将pdf转换为图片