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

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

时间:2023-10-24 17:00:40浏览次数:31  
标签:文件 打印机 Java 驱动程序 PCL 驱动 PDF

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

场景:用户电脑上安装了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的功能???

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

 

标签:文件,打印机,Java,驱动程序,PCL,驱动,PDF
From: https://www.cnblogs.com/wmdny/p/17785152.html

相关文章

  • 如何用Java找出两个List中的重复元素,读这一篇就够了
     在Java编程中,我们经常需要找出两个列表(List)中的重复元素。在本文中,我们将探讨三种方法来实现这一目标。 方法一:使用HashSetJava中的HashSet是一个不允许有重复元素的集合。我们可以利用这个特性,通过合并两个List并计算差集,来找出重复的元素。以下是一个通过使用HashSet数......
  • [VM] The JavaScript Virtual Machine
    TableofContentIntroudctiontoVMsCPU-UnderstandingthePysicalMachineVMs-Arrays,Objects,functions,prototypechainsDepotExplorer:collectingdatafromtheVMDeopt:CallingCoventions&InliningMegamohpism&InlineCache:Objectpro......
  • Java ConcurrentModificationException异常原因和解决方法
    JavaConcurrentModificationException异常原因和解决方法JavaConcurrentModificationException异常原因和解决方法在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以......
  • java动态创建es 及mapping
    publicCreateIndexResponsecreateIndexWithMapping(Stringindex,Map<String,String>mapping){CreateIndexResponseresponse=null;try{CreateIndexRequestrequest=newCreateIndexRequest(index);request.settings(Settings.b......
  • Java中的NumberFormatException异常常见原因是什么?
    Java中的NumberFormatException异常常见原因是什么?Java中的NumberFormatException是一种常见的异常,它通常在字符串转换成数值类型时发生。本文将探讨NumberFormatException异常的原因及解决方法。引起NumberFormatException异常的原因:字符串转换成数值类型时格式错误。例如,对于......
  • Linux配置java和maven环境变量
    修改/etc/profile文件,新增如下代码exportJAVA_HOME=/usr/local/btjdk/jdk8exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexportPATH=$PATH:$JAVA_HOME/binexportM2_HOME=/usr/local/maven/apache-maven-3.9.4exportPATH=$PATH:$M2_HOME/bin刷新/etc/prof......
  • JavaScript在发送AJAX请求时,URL的域名地址是使用绝对地址还是相对地址?
    在使用JavaScript发送AJAX请求时,URL的域名地址通常是使用相对地址。相对地址指的是相对于当前页面的URL来确定请求的目标地址。当请求发送到服务器时,浏览器会自动将相对地址转换为完整的绝对URL。这样做的好处是能够更灵活地处理不同环境下的URL路径,同时减少了在JavaScript代码中......
  • Java List 排序的2种方法
    1. 利用Collections类的java.util.Collections.sort(java.util.List,java.util.Comparator)方法,自定义比较器对象对指定对象进行排序对学生对象按照其分数(降序)进行排序,当分数相同时按学号(从小到大)排序,代码如下:Student类classStudent{ privateintid; privateStringname......
  • Java HashMap类
    HashMap是我们使用非常多的Collection,它是基于哈希表的Map接口的实现,以key-value的形式存在。HashMap实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该......
  • Java中Servlet Filter配置(web.xml详解)
    Java中ServletFilter在web.xml中配置时有2个用于过滤器的元素,分别是filter和filter-mapping。filter元素向系统注册一个过滤对象,filter-mapping元素指定该过滤对象所应用的URL。Filter配置过滤器元素filter元素filter元素位于部署描述符文件(web.xml)的前部,所有filter-mapping、serv......