最近因为私事需要提交护照扫描照片,但是护照扫描之后是pdf格式,而办事的网站需要提交图片格式的护照,所以就涉及到一个把pdf转成图片的问题。
在网上搜索了一下,有很多在线把pdf转图片的网站。可是,我要转的是个人护照,不想上传到别人的网站。
也有一些可以软件可以做本地转换,可惜都不是免费的。
所以我有了自己写一款的打算。
做了一些基本的research,发现要开发处理pdf类型文件的程序,都需要用一个叫GhostScript的软件库,很难绕开。而一旦用了这个软件库呢,后面的工作又会变得非常简单。
虽然我也不是很信任这些"软件库",但是自己又不懂pdf文件的格式,感觉研究清楚这个就得好长一段路。那不如信他一次,直接站在巨人的肩膀上吧。好歹这个软件库的安装文件是数字签名过的(Artifex Software, Inc)。真要有后门,这么多人用,应该已经有人找他们巨额索赔了吧。
用了这个库,开发一款把pdf转换成图片格式的软件真是易如反掌。更准确的说,开发软件的时间比装这个GhostScript的时间还短。
开发我需要的软件过程如下:
第一步,安装GhostScript。下载网址https://www.ghostscript.com/download/gsdnld.html
如上图,点击下载那个Ghostscript 9.26 for Windows (32 bit)的免费版。
双击安装,一路Next,Install,Finish下去就可以。但其实,如果你愿意仔细研读一下他的授权条例的话,也不妨花时间去看一下。我看了之后的总结就是,如果你想把它的任何东西用到你的软件里面,或者你的为别人公开提供服务的网站(比如网上那些提供pdf转图片服务的)里面,你必须开源。
GPL就是这样的。我很想基于它开发一款免费的pdf转图片的软件(因为对绝大多数人来说,为转换一个比较隐私不愿在线转换的pdf付钱实在是太奢侈了……)。但是为此遵循GPL协议的条件就是必须开源。好吧好吧,开就开吧,反正代码写得烂估计也没人愿意看。
GhostScript库安装完成,下面开始开发软件:
第一步,打开Visual Studio:
第二步,创建新的Windows Console Application Project:
第三步,安装GhostScript.NET nuget package:
第四步,拷贝如下代码过去:
第五步,编译,完成!
运行方式很简单,将你要转换的pdf放到该程序的同目录下面,双击该程序,然后pdf就会被转成jpeg格式的图片了。
这个只是最简单版的程序,只能转成jpeg格式。改天有空我来写个更User-friendly的带GUI的pdf转图片程序,加一些新功能比如可以自己选择原文件和目标文件地址,可以选择目标图片的格式,供大家下载使用。(当然,还得发布源代码……)
希望这篇文章可以帮助到那些想把pdf转成图片,不相信那些在线网站,又不愿意为此专门花钱买软件的人。