在我们的软件中,我们需要能够将打印机驱动程序写入 C:\Windows\System32\spool\PRINTERS 文件夹的 SPL 文件转换为 PDF 文件。对于 PCL 格式的 SPL 文件,我们使用来自 VeryPDF 的 pcltool.exe 执行此转换,它大部分工作正常。但是,打印机驱动程序“Canon iR-ADV C5235/5240 PCL6”生成的 SPL 文件存在问题。例如,以下 SPL 文件是通过在记事本中打印出带有单词“something”的单页产生的:
http://files.etvdzs.info/00025.spl
使用 pcltool.exe 转换 00025.spl 会生成一个 70 页的 PDF,每页顶部都有一行乱码。尝试使用其他 PCL 查看器打开 00025.spl 会得到类似的结果。我们询问了 VeryPDF,他们告诉我们这不是有效的 PCL 文件。
谁能告诉我这个文件到底是什么无效?是否有可能将其转换为有效的 PCL 或从中提取可用数据?
顺便说一句,我们在使用“Canon iR-ADV C5235/5240 PS3”打印机驱动程序生成的 Postscript 文件时遇到了类似的问题。在文件的不同位置存在以 $CDCA10 开头并以 $FFFF000000000000000001 结尾的二进制序列。删除这些序列后,我们就可以正常转换文件了。我为“Canon iR-ADV C5235/5240 PCL6”生成的文件尝试了类似的解决方案,但不幸的是没有成功。
编辑(2013 年 9 月 13 日):二进制序列似乎是 CPCA 代码。通过在以下 URL 注册佳能开发者支持计划,我能够获得有关 CPCA 的文档:
https://www.developersupport.canon.com/user/register
阅读此文档后,我编写了一个程序来从假脱机文件中删除 CPCA 代码。这是从上面的文件 00025.spl 上运行程序的结果:
http://files.etvdzs.info/00025.cleaned.spl
不幸的是,这似乎仍然不是一个有效的 PCL 文件 :-( 谁能告诉我这个文件到底有什么问题?有没有可能将其转换为有效的 PCL 或以其他方式从中提取可用数据?
PS我写的程序确实成功地将打印机驱动程序“Canon iR-ADV C5235/5240 PCL5c”和“Canon iR-ADV C5235/5240 PS3”生成的假脱机文件分别转换为有效的PCL和Postscript,所以我不认为它是程序不起作用的简单问题。