2007-05-21 23:48
  PDG 图像PDF 的若干方法
  一、前言
  二、截图法
  三、打印法
  四、BooX Viewer
  五、pdg2bmp&jpg&tif&pdf&txt
  六、Pdg2Pic
  七、方法之比较与展望
  八:题外话:图像文件 PDF
  一、前言
  PDG 文件是超星公司电子图书的专有格式,需要用超星公司的专用浏
  览器才能阅读。本文讨论 PDG 转图像、PDF 的方法,仅出于研究目的,
  并无意对超星公司的版权进行任何形式的侵犯,也不希望任何人用本
  文讨论的工具或方法从事侵权活动。如果需要浏览 PDG 电子书,请通
  过购买点卡等方式,以合法的途径获得。
  本文假定用户通过合法的手段获得 PDG 文件,只是由于希望能够在比
  超星浏览器更好、更方便的浏览器上阅读,并且不对转换出来的文件
  进行扩散的情况下,才需要将 PDG 文件转换成图像文件或 PDF 文件。
  二、截图法
 
  简单点说,就是通过截图的方法,直接将超星浏览器中显示的内容,
  截为图片,再将图片转换成 PDF 文件。
  这个方法可能是世界上最简单、最朴素,也是最容易想到的方法,并
  且对于所有版本的超星浏览器和所有能够正常显示的 PDG 文件均适
  用。制约这个方法的因素包括:
  页面大小超出显示区域,导致截图截不全。解决的办法包括:一台
  支持高分辨率设置的 PC(现在 17"液晶已经很便宜,19"也快平民化
  了);如果显卡支持旋转显示,则将整个屏幕旋转 90°显示,方便
  显示细长页面。
  手工一页一页截图,劳动强度比较大。解决的办法就是用各种现成的
  按键、鼠标录制/播放软件与屏幕截图软件相结合,或者自己做一个
  连翻页带截图的小软件,实现自动化操作。
  截出来的图像可能需要进行整理,包括切边、图像文件格式转换等。
  总之,截图发虽然有一些限制,用起来也比较麻烦,但很难被超星屏
  蔽,不失为一种终极的方法。
  三、打印法
  即在超星浏览器中发布打印命令,将正在浏览的 PDG 文件打印到 PDF
  虚拟打印机(包括 Acrobat PDF 打印机、PDFFactory 打印机等),
  成为 PDF 文件。
  这种方法也是较早被用于转换 PDG 文件的方法之一,而且用起来非常
  简单、方便,因此广为流传,导致后来超星阅读器针对这种方法加了
  一些限制,但是这些限制很快就被突破,然后双方就这样乐此不彼、
  义无反顾、周而复始地一轮、一轮折腾下去。虽然在无关的人看来有
  点无聊,但是投身其中的人经常都会为每一个微小的突破而激动
  还真是有精神寄托的人生。
  目前制约这个方法的因素包括:
  超星浏览器对 PDF 打印机的封锁。 新版超星浏览器会检查打印机的
  名称,发现是 PDF 打印机则不让打印。不过超星软件毕竟没有人智能,
  打印机被人一改名就检测不出来了。也有人先将 PDG 打印到支持
  PostScriptPS)文件格式的真实打印机,再用 Acrobat PS 文件
  转换成 PDF 文件,以绕过超星对虚拟打印机的检查。
  超星浏览器对打印页数的限制。超星浏览器会限制合法用户每个月的
  打印总页数,够数(每月一千页)后就不允许打印。解决的办法包括
  将 ssreader.ul 文件属性改为只读,或定期对这个文件进行备份、恢
  复。
  超星浏览器对打印效果的限制。 新版本的超星浏览器可能对以前的
  限制与反限制游戏终于厌倦了,因此干脆在打印的时候降低打印质
  量,导致打印出来的 PDF 图像质量与原始 PDG 文件差很多。针对这一抽奖箱
  招,目前网上提出的解决办法包括将新版 DLL 文件替换为旧版 DLL
  或提高打印机 DPI 设置等。
  总之,在我看来,打印法虽然简单方便,打印黑白图像也问题不大,
  但是打印灰度/彩图像会出现图像质量衰减或文件膨胀等问题,所
  以至少我自己不到不得已是不会用的。
  四、BooX Viewer
  BooX Viewer MomotaloShunCoxdd321 等合作开发的一款轻量、
  绿 PDG 浏览器,无需安装,单独一个 EXE 文件即可运行,并且能够
  直接读取 ZIP 文件中的 PDG 文件等,这些都比原版超星浏览器强,也
  导致了它的流行。
唐季礼 林心如  早期版本的 BooX Viewer 提供一个转换到 DjVu”功能,该功能先
  将 PDG 文件转换成 BMP,再转换成 DjVu 文件。因此也有人利用此功
  能的前半部分,先将 PDG 文件转换成 BMP,再将 BMP 转换成 PDF。不
  过这个功能在后来的版本中已经取消了,并且加了一些类似广告的限
  制。
  BooX Viewer 的开发基于对 PDG 文件格式的分析,不需要超星浏览器
  或 DLL 的支持,并且能够解码加密的 10H 等格式,这些都让我对其开
  发者充满了敬意。
  五、pdg2bmp&jpg&tif&pdf&txt
  这个软件是 coolman 开发的,对 PDG 的支持(包括 OCR)基于超星 Pdg2
  控件,对图像、PDF 的支持基于 Pegasus ImagXpress Professional
  控件,运行前需要先注册控件。
  这个软件的发行范围很窄,最新版是多少我也不知道,只能以我手上
  现有的 3.8b0419 版来说事。在使用这个版本的过程中,我发现它存
  在下列限制:
  直接将 PDG 转换成 PDF,则所有彩、灰度图像均变成黑白图像。解
  决的办法是先转换成 BMP,再用其它软件将 BMP 转换成 PDF 但是不
  知道为什么,pdg2bmp&jpg&tif&pdf&txt 没有文件重新编号功能,所
  以在从 BMP 转换成 PDF 时,页面顺序调整起来很麻烦。
  将 PDG 如何折玫瑰花转换成 BMP 等图像格式时,允许使用多线程并行转换,但是似
  乎稳定性会随之下降,所以我都只敢用单线程转换。
  最要命的一点就是:这个软件在转换时需要占用系统剪贴板,因此如
  果在转换过程中同时用中国第一枚奥运金牌获得者 Office 等软件干活(没办法,转换过程实在
  是太漫长了),则复制/粘贴功能将失效。我先是在工作时发现了这
  个问题,然后用剪贴板监视软件证实了我的猜测。对剪贴板的占用不
  仅影响前台软件的正常使用,而且由于 Windows 本身对系统剪贴板的
  限制,在转换 幅面很大的 PDG 文件时会转不了。
  虽然有一些问题,但是这个软件支持加密的 AAH 格式等(除该软件外,
  coolman 还开发了一些独立运行的 PDG 解密软件),这些都让我对
  coolman 及其作品充满敬意。
  六、Pdg2Pic
  在发现 coolman pdg2bmp&jpg&tif&pdf&txt 会占用系统剪贴板后,
  我 google 了一下,还真查到了一段源代码,虽然我不可能看到
  pdg2bmp&jpg&tif&pdf&txt 的源代码,但我相信它的核心应该与这段
  代码相似。不过在多看了两遍这段代码后,我觉得既然已经用了 Pdg2
  控件,为什么不用它提供的其它接口获取图像,干嘛非要用系统剪贴
  板?为了证实我的想法的可行性,我花了点时间写了 Pdg2Pic 这个软
  件,顺便对我在使用 pdg2bmp&jpg&tif&pdf&txt 过程中发现的一些问
  题做了改进,包括:
  转换过程不占用系统剪贴板,不影响用户在前台的正常工作。pdf电子书制作
  可以自动将文件按封面、前言、目录、正文、附录的顺序排列,也可
  以手动调整文件顺序。
  提供预览功能,在转换前可以先浏览 PDG 图像。
  PDG 文件的扫描 DPI 自动转存入生成的 TIFFPNG 文件,便于在转换
  成 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文件可能会比AcrobatJBIG2
  转出来的大一点。如果您手上有没有法律问题的 JBIG2 压缩源代码,
  欢迎与我联系。
  没有线性优化功能。如果您制作的 PDF 只在本地阅读,不打算通过
  IE 在线阅读,这个缺点将变成优点。
  总之,现在也没有十全十美的图像转 PDF 软件,也许这样的方法会是
  更好的选择:转换还是用支持 JBIG2 JPEG 2000 Acrobat 转,但
  是做一个小程序,将它转出来的 PDF 文件的黑白图像的背景改为透
  明。由于是单纯的字符替换,所以软件很好写,并且不需要其它第三
  方代码或控件的支持