我在Java Tomcat webapp中的内存中有Postscript代码/数据(?), 希望将其直接发送到网络化的PS打印机。是否有一种简单的方式(即只需打开一个端口并发送文本)来打印此内容,绕过所有特定于操作系统的驱动程序和其他内容(并且希望不需要额外的jar包)?请提供示例代码的链接。
谢谢, Dave
谢谢, Dave
打开一个TCP套接字连接到目标打印机的LPR端口。
发送你的数据;只要打印机理解,一切都好。
完成后不要忘记换行符。
(然后关闭端口。)
请查看 java.awt.print。它是 Java 中的通用打印 API。
不幸的是,它不适合处理您已有的 PostScript 内容。它旨在让您使用 Java 2D 图形 API 在纸张上“绘制”。
我不确定你能否在没有额外库的情况下完成它。
这个示例向你展示如何将文件发送到网络打印机,但需要一个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();
}
}
}