henry200
第1楼2006/10/06
六、Pdg2Pic
在发现coolman的pdg2bmp&jpg&tif&pdf&txt会占用系统剪贴板后,我google了一下,还真查到了一段源代码,虽然我不可能看到pdg2bmp&jpg&tif&pdf&txt的源代码,但我相信它的核心应该与这段代码相似。不过在多看了两遍这段代码后,我觉得既然已经用了Pdg2控件,为什么不用它提供的其它接口获取图像,干嘛非要用系统剪贴板?为了证实我的想法的可行性,我花了点时间写了Pdg2Pic这个软件,顺便对我在使用pdg2bmp&jpg&tif&pdf&txt过程中发现的一些问题做了改进,包括:
转换过程不占用系统剪贴板,不影响用户在前台的正常工作。
可以自动将文件按封面、前言、目录、正文、附录的顺序排列,也可以手动调整文件顺序。
提供预览功能,在转换前可以先浏览PDG图像。
PDG文件的扫描DPI自动转存入生成的TIFF、PNG文件,便于在转换成PDF文件时设置页面大小。
如果检查发现PDG文件是纯正的JPG文件,将不进行任何转换,直接将PDG复制为JPG;黑白PDG文件转存为采用CCITT
G4压缩的TIFF文件,以获取高压缩比;灰度/彩色PDG重新压缩为有损的JPG或采用JPEG压缩的TIFF文件,或无损压缩的PNG文件,或JPEG
2000(有损/无损)。
由于我没有时间对加密PDG文件进行研究,因此Pdg2Pic不像pdg2bmp&jpg&tif&pdf&txt那样支持众多加密PDG格式。如果在Pdg2Pic统计的文件类型中出现加密格式,需要用1xhkillerfull、aahkiller等进行解密,然后再用Pdg2Pic进行转换。如果您原意提供PDG文件解密算法或代码,欢迎与我联系。
七、方法之比较与展望
上面介绍了一些PDG转图像、PDF的方法,说句实在话,我认为没有一种方法是完美的,多多少少都有点毛病。而且在我看来,对于一个真正的PDG转PDF软件,至少还要解决以下问题:
从PDG目录到PDF书签(Bookmark)的转换。现在有些PDG图书是带目录的,在超星浏览器中打开后,左侧会显示树状结构的目录,便于快速定位需要阅读的页面。这个与PDF中的书签很类似,但是现在似乎还没有一个软件能够在将PDG转换成PDF时,顺手将目录转换成书签。
将图书信息(bookinfo.dat)插入PDF文件,便于用Adobe PDF
Reader的搜索(search)功能,在一大堆PDF文件中找到需要的书。bookinfo.dat其实是一个标准INI文件,用文本记录了书籍的书名、作者等信息,如果作为一个文本页插入PDF文件尾,无疑将给搜索提供一些必要的信息。
支持透明背景。原始的黑白PDG文件本身可以按透明背景色显示,因此在超星浏览器中可以根据需要对背景色、前景色进行设置,便于长时间观看。相比之下,PDF的白底黑字看起来就累多了。其实PDF
Reader本身是支持对页面背景进行定义的,条件是PDF中的图像必须采用透明背景。如果图像本身敲死了一定要用白底,PDF
Reader也没有办法。
现在最后一个问题可以通过FreePic2Pdf
1.01版解决,第二个问题可以通过超星章节目录提取器(SSContent)部分解决,其它问题解决起来都有点难度,不知道有多少人原意去做?至少我自己是没打算要去做,但是我很期待看到其他高手能够解决这些问题,推出更好的PDG转PDF工具。
八:题外话:图像转PDF
本文的题目叫《PDG转图像、PDF的若干方法》,但是前面讨论的某些方法,如截图法只能得到图像,不能直接得到PDF文件,因此自然还需要讨论一个问题:怎样将图像转换成PDF文件?
别人怎么想的我不知道,我自己认为比较好的转换方法有两种:
1、用Adobe Acrobat Professional的Create PDF from Multiple Files,而不用它的虚拟打印机
这种方法的优点是:
如果在转换前先指定黑白图像用无损JBIG2压缩,可以获取最高压缩比。
可以获得经过线性优化的PDF文件,这种文件在通过网络浏览时可以边浏览边下载,因此也被称为Fast Web
View文件。但是对于只在本地阅读的PDF文件来说,我认为这种优化只会增加文件长度,不会节省实际的打开时间。
这种方法的缺点是:
对于灰度/彩色图像,可能会因为重新采样压缩而造成图像质量衰减或文件膨胀。这方面的讨论参见我写的《图像转PDF的问题、方法及题外话》。
如果一次需要处理几本书,操作起来有点麻烦。
如果图像大小不一,转换出来的页面大小也不一致,看起来有点心烦。
至尽为止,我还没有找到如何设置,才能在转换黑白图像时,能够将背景设置为透明。如果您知道,还请不吝赐教。
2、用FreePic2Pdf
这种方法的优点是:
按照缺省设置,黑白图像转换成CCITT G4数据流,JPEG/JPEG
2000数据流直接嵌入PDF文件,不会因为重新采样压缩而造成图像质量衰减或文件膨胀。
便于批量处理,包括设置页面大小、页边距,在开始转换前调整文件顺序也很方便。
从1.01版开始,对于黑白图像,可以自动转换成透明背景色。由于有了这个功能,我甚至打算在有了好的PDF转图像软件后,把以前收集的一些扫描版PDF还原成图像,再用它转成PDF。原因无它,
白底黑字的PDF实在是看怕了。
最重要的一点:它是免费的绿色软件,个人使用不存在法律后患。
这种方法的缺点是:
由于缺乏相关开源项目的支持,因此不支持JBIG2压缩,只能采用CCITT
G4压缩黑白图像,转出来的PDF文件可能会比Acrobat用JBIG2转出来的大一点。如果您手上有没有法律问题的JBIG2压缩源代码,欢迎与我联系。
没有线性优化功能。如果您制作的PDF只在本地阅读,不打算通过IE在线阅读,这个缺点将变成优点。
总之,现在也没有十全十美的图像转PDF软件,也许这样的方法会是更好的选择:转换还是用支持JBIG2和JPEG
2000的Acrobat转,但是做一个小程序,将它转出来的PDF文件的黑白图像的背景改为透明。由于是单纯的字符替换,所以软件很好写,并且不需要其它第三方代码或控件的支持。
感谢本文作者,请大家参考