由于工作需要,购买了一套正版的(没错,我特意强调这点)的Acrobat 9,安装在一台计算机上专门用来进行文档转PDF的自动化过程。转换工作是通过Acrobat的PDF虚拟打印机来完成的,工作了几年,一切良好。
本来在正常情况下,PDF虚拟打印机被设置为默认在C盘根目录下面创建PDF文件,不提示输出文件名。但突然PDF虚拟打印机就不工作了,不向指定的位置输出PDF文件,而是自动改为向当前用户的“我的文档”位置输出,不过,更糟糕的是,它一旦出现创建进度对话框后就停住了,没有任何PDF文件被实际生成。除非手工杀掉Acrotray.exe进程,否则那个创建进度对话框就一直停留在那里。
重启计算机,故障依旧。
心想,问题出在那里呢。这种故障太莫名其妙了。仔细观察那个停住不动的创建进度框(平时正常工作时,这个创建进度框一闪而过从来都没去管过),发现了一件事情:进度框里面的“文档名称”下拉框是可以点击的,点击后可以看到大量之前生成的文档的文件名。
(这个截图是正常工作情况的,排障时只顾着找原因,没截下来)
这样啊,是否有打印任务没有完成导致堵塞呢,于是查看Windows的打印任务池:
C:\Windows\System32\spool\PRINTERS
但是,里面空空如也。
看来不是这个问题。那么,估计问题可能还是在PDF虚拟打印机的设置上。于是进去注册表,首先检查了打印机的设置,位于
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Adobe PDF
根据经验检查了一下,看上去都正常。那么问题不在打印机上,那就有可能是Distiller的问题了。这里顺便解释一下,Acrobat Distiller是Acrobat里面的一个重要部件,是负责把用PostScript描述的页面数据转换为PDF格式的。
于是转去看Distiller的设置,当在注册表里面点到
HKEY_CURRENT_USER\Software\Adobe\Acrobat Distiller\PrinterJobControl
位置时,注册表编辑器整个挂起了。马上可以意识到,这只有两种可能,要么是注册表文件被破坏了,要么就是这个位置下面太多键值!
换了一个第三方的注册表编辑器Registry Workshop(是我用过的最好用的第三方注册表编辑器,下载),转到刚才的位置一看,好家伙,几年来生成的PDF的文件名都在里面,足有26万条(这个数字很正常,自动化生成PDF嘛)键值。这下子问题的的解决方案很清楚了:全部删除。
考虑过直接删除PrinterJobControl项然后重建,不过还是选择了删除键值的方式。结果删除过程之漫长,足足用了2.5个小时。期间搜索了一下这个注册表项,原来Adobe有解释的:
大约说的是,这个注册表项用于控制Distiller在生成PDF时不提示生成文档的名称。帮助信息里面说,这个信息在Windows API StartDoc成功执行后就会删除。但是,很明显,这些信息没有被删除,具体原因就不得而知。
删除完毕后,顺便还用Registry Workshop整理了一下注册表,把用户部分的注册表文件从未整理的25M缩小到了1.4M。重启计算机,一切正常了。
本站微信订阅号:
本页网址二维码: