关于Windows打印机驱动相关问题-如何利用Java(或其他)调用打印机驱动程序完成原始文件翻译为PCL语言的步骤
前面这些都是问题描述,问题在偏下面
场景:用户电脑上安装了PCL驱动,可通过驱动完成打印。
需求:现在需要提供一种脱离PC端完成文件上传并打印的功能。让用户使用手机或pc未安装驱动时都能打印文件。
目前思路:首先上传文件这一步没有任何问题,开发了相应的H5界面,通过浏览器进行原始文件的上传。
难点在于用户多种多样类型格式的文件,如何转换为打印机能够输出的文件。
现阶段是通过各种各样的转换方法东拼西凑,支持将doc(x)、xls(x)、ppt(x)、txt、jpg/png统一转为PDF文件,然后通过PCL命令LANGUAGE=PDF,传输给打印机,完成PDF文件的输出。
这种方法目前能凑合着用,但是各类型文件转PDF这一步比较麻烦。
现在想了一种新的思路:在服务器上安装我们的PCL驱动,然后通过命令行或者JAVA或者C#等编程语言,来触发打印机打印文件。
尝试一:
通过搜索引擎了解到了JAVA内置的PrintService类,我测试了两种类型的作业:PrinterJob和DocPrinterJob,
- 前者需要提供一个Printable对象,这个对象就是需要你自己把各类型文档的内容先解析一遍,再按照它的标准接口绘制到它的图形里去。------- 还是需要自己对文档进行转换,太麻烦了,被pass了。
- 后者就是把你文档内容原封不动的传给打印机。-----根本没做转换动作,pass。
尝试二:
通过搜索引擎了解到了批处理的【print】命令,测试后发现不行
还试了write /pt 666666.pdf "打印机" " 驱动" "test.prn"命令,它应该是调用了记事本的接口,只能输出txt文件(还会乱码)。其他文件不合适。
尝试三(待实现):
还是通过搜索引擎,看了
操作系统是如何控制打印机打印文件的? - 知乎 (zhihu.com)
这篇文档,了解了文件转PCL一般是驱动程序完成的(回过头来想想也是,所以【尝试一】中,直接调用打印机服务进行打印并没有对进行文件转换,因为是驱动完成的这一步)。
问题在这
所以想咨询园内大佬:有没有什么方法,能够通过非手动的方法,唤起我电脑上的驱动程序,进行文件的转换。用的驱动是【MINOLTA C368SeriesPCL】
扩展:
如果上一步可行,我看到windows电脑上还自带了一个【Microsoft Print To PDF 】的打印机和驱动程序,是否就可以用相同的方式完成各类型文件转PDF的功能???
本人从事打印机相关的软件行业,对打印机、打印驱动这些有一丢丢了解,但又不是很清晰,如果有哪里说的不对,欢迎指正。接受批评。