首页 新闻 会员 周边 捐助

关于Windows打印机驱动相关问题-如何利用Java(或其他)调用打印机驱动程序完成原始文件翻译为PCL语言的步骤

0
悬赏园豆:15 [待解决问题]

先说最终问题:

如何通过java利用windows上现有【驱动/打印机】完成原始文档(word、excel、...)转PCL文件。其等同于我们手动实现以下操作:使用软件打开文件-》ctrl+p调起打印机驱动-》设置参数,点击打印。

前面这些都是问题描述,问题在偏下面

场景:用户电脑上安装了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 111.pdf "打印机" " 驱动" "test.prn"命令,它应该是调用了记事本的接口,只能输出txt文件(还会乱码)。其他文件不合适。

尝试三(待实现):

还是通过搜索引擎,看了操作系统是如何控制打印机打印文件的? - 知乎 (zhihu.com)这篇文档,了解了文件转PCL一般是驱动程序完成的(回过头来想想也是,所以【尝试一】中,直接调用打印机服务进行打印并没有对进行文件转换,因为是驱动完成的这一步)。

问题在这

所以想咨询园内大佬:有没有什么方法,能够通过非手动的方法,唤起我电脑上的驱动程序,进行文件的转换。用的驱动是【MINOLTA C368SeriesPCL】

扩展:

如果上一步可行,我看到windows电脑上还自带了一个【Microsoft Print To PDF 】的打印机和驱动程序,是否就可以用相同的方式完成各类型文件转PDF的功能???

本人从事打印机相关的软件行业,对打印机、打印驱动这些有一丢丢了解,但又不是很清晰,如果有哪里说的不对,欢迎指正。接受批评。

问题补充:

又看了一些文章,转换为PCL这一步说是由Spooler完成的,为了避免我有限的知识对大家产生误导,我简单粗暴的说出我想要的:

>>> 如何通过java利用windows上现有【驱动/打印机】完成原始文档(word、excel、...)转PCL文件。其等同于我们手动实现以下操作:使用软件打开文件-》ctrl+p调起打印机驱动-》设置参数,点击打印。

玩屎的猪的主页 玩屎的猪 | 初学一级 | 园豆:59
提问于:2023-10-24 16:58
< >
分享
所有回答(1)
0

这个我搞过,可以使用windows服务器来实现.

1.在windows下安装好office2016
2.然后java执行powershell命令直接打印.

3.powerShell命令如下.
$word = New-Object -ComObject Word.Application
$word.Visible = $false
$doc = $word.Documents.Open("D:\temp\121.docx")
$doc.PrintOut()
$doc.Close()
$word.Quit()

隔壁曼玉 | 园豆:217 (菜鸟二级) | 2023-10-25 16:45

确实是可以的,而且支持多线程调用,不过在打印pdf文件时直接调起了wps导致失败。
另外同事也分享了一篇:文章【Java基于Libreoffice转换word/excel/ppt等常见文档格式到pdf】https://www.jianshu.com/p/8fc4f29f3e3a 。再此与您也共享一下。非常感谢

支持(0) 反对(0) 玩屎的猪 | 园豆:59 (初学一级) | 2023-10-26 09:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册