在我们的软件中,我们需要能够将打印机驱动程序写入的SPL文件转换为PDF文件到C:\ Windows \ System32 \ spool \ PRINTERS文件夹。对于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结尾。删除这些序列后,我们就可以正常转换文件了。我为“佳能iR-ADV C5235 / 5240 PCL6”生成的文件尝试了类似的解决方案,但不幸的是没有成功。
EDIT(2013年9月13日):似乎二进制序列是CPCA代码。我可以通过以下网址注册佳能开发人员支持计划来获取有关CPCA的文档:
https://www.developersupport.canon.com/user/register
阅读本文档后,我编写了一个程序来从假脱机文件中删除CPCA代码。这是从上面运行文件00025.spl的结果:
http://files.etvdzs.info/00025.cleaned.spl
不幸的是,这似乎仍然不是一个有效的PCL文件:-(任何人都可以告诉我这个文件到底出了什么问题?是否有可能将其转换为有效的PCL或以其他方式从中提取可用数据?< / p>
P.S。我写的程序成功地将打印机驱动程序“Canon iR-ADV C5235 / 5240 PCL5c”和“Canon iR-ADV C5235 / 5240 PS3”生成的假脱机文件分别转换为有效的PCL和Postscript,所以我不想想这个程序不起作用很简单。
答案 0 :(得分:1)
你可能会遇到EMF或类似文件。确保服务器队列(如果要打印到网络打印机)设置为“在客户端计算机上渲染”。我还希望将打印处理器设置为Winprint RAW。也可能是佳能PCL打印机不像你想要的那样通用。您可以随时尝试使用其他PCL驱动程序,看看您的转换器和佳能设备是否支持该格式。要确认问题不是Windows后台处理程序,您可以将端口设置为FILE和/或使用捕获实用程序来写出打印机在所有处理后实际接收的内容。如果可行,但SPL没有,那么您有Windows后台处理程序和/或处理器问题。