Java直接打印到Postscript网络打印机

我在内存中(在Java Tomcat webapp中)有Postscript代码/数据(?),我想直接发送到网络PS打印机。 是否有一种简单的方法(即只是弹出一个端口并发送文本)来打印它,绕过所有O / S特定的驱动程序和东西(希望甚至不需要额外的jar子)? 指向示例代码的链接显示如何执行此操作?

谢谢,戴夫

打开目标打印机上LPR端口的TCP套接字。

发送您的数据; 只要打印机理解它,你就很酷。

完成后不要忘记换行。

(然后关闭端口。)

您可以将它直接发送到端口9100上的网络打印机。我在这里写了一篇博文:

http://frank.zinepal.com/printing-directly-to-a-network-printer

问题是大多数激光打印机不支持PostScript。 您通常需要为它安装打印机插件。

没有额外的库,我不确定你能做到。

此示例向您展示如何将文件发送到网络打印机,但需要一个adobe库(虽然基于商业J2EE Livecycle ES ,因此不是通用的“免费”解决方案……)。

import com.adobe.livecycle.output.client.*; import java.util.*; import java.io.File; import java.io.FileInputStream; import com.adobe.idp.Document; import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; public class SendToPrinter { public static void main(String[] args) { try{ //Set LiveCycle ES service connection properties Properties ConnectionProps = new Properties(); ConnectionProps.setProperty("DSC_DEFAULT_EJB_ENDPOINT", "jnp://localhost:1099"); ConnectionProps.setProperty("DSC_TRANSPORT_PROTOCOL","EJB"); ConnectionProps.setProperty("DSC_SERVER_TYPE", "JBoss"); ConnectionProps.setProperty("DSC_CREDENTIAL_USERNAME", "administrator"); ConnectionProps.setProperty("DSC_CREDENTIAL_PASSWORD", "password"); //Create a ServiceClientFactory object ServiceClientFactory myFactory = ServiceClientFactory.createInstance(ConnectionProps); //Create an OutputClient object OutputClient outClient = new OutputClient(myFactory); //Reference XML data that represents form data FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\\Loan_data.xml"); Document inputXML = new Document(fileInputStream); //Set print run-time options PrintedOutputOptionsSpec printOptions = new PrintedOutputOptionsSpec(); printOptions.setPrinterURI("\\\\Printer1\\Printer"); printOptions.setCopies(2); //Send a PostScript print stream to printer OutputResult outputDocument = outClient.generatePrintedOutput( PrintFormat.PostScript, "Loan.xdp", "C:\\Adobe", "C:\\Adobe", printOptions, inputXML); //Write the results of the operation to OutputLog.xml Document resultData = outputDocument.getStatusDoc(); File myFile = new File("C:\\Adobe\\OutputLog.xml"); resultData.copyToFile(myFile); } catch (Exception ee) { ee.printStackTrace(); } } } 

查看java.awt.print。 它是java中的通用打印API。

不幸的是,它不是围绕处理你已经拥有的postscript内容。 它旨在让您使用java 2d图形API在一张纸上“绘制”。