我在內存中(在Java Tomcat Web應用程序中)有Postscript代碼/數據(?),我想直接發送到聯網的PS打印機。有沒有簡單的方法(即只是彈出打開一個端口併發送文本)來打印這個,繞過所有的O/S特定的驅動程序和東西(並希望甚至不需要額外的罐子)?示例代碼的鏈接顯示如何做到這一點?Java直接打印到Postscript網絡打印機
謝謝, 戴夫
我在內存中(在Java Tomcat Web應用程序中)有Postscript代碼/數據(?),我想直接發送到聯網的PS打印機。有沒有簡單的方法(即只是彈出打開一個端口併發送文本)來打印這個,繞過所有的O/S特定的驅動程序和東西(並希望甚至不需要額外的罐子)?示例代碼的鏈接顯示如何做到這一點?Java直接打印到Postscript網絡打印機
謝謝, 戴夫
打開TCP套接字到目標打印機上的LPR端口。
發送您的數據;只要打印機理解它,你就很酷。
當您完成時,請不要忘記換行。
(然後關閉端口)。
實際上,對於lpr/lpd協議,有一點比管道數據多一點,我前一段時間寫了一個Java實現,在http://sourceforge.net/projects/jlpr/ – 2009-09-21 08:30:20
我不知道你能做到這一點無需額外庫。
這example展示瞭如何將文件發送到網絡打印機,但requieres土坯庫(基於商業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「繪製」。
您可以直接發送到網絡打印機在端口9100上我寫了一篇博客文章中針對此位置:
http://frank.zinepal.com/printing-directly-to-a-network-printer
的問題是,大多數激光打印機不支持PostScript。您通常必須爲其獲取打印機附件。
你可以將其鎖定到特定的操作系統嗎? – 2008-11-24 20:52:06
那麼,我正在Ubuntu上開發並在Ubuntu或WinXP上部署。我希望將打印機作爲一個具有IP地址的設備,從而繞過所有O/S特定的廢話。 – 2008-11-24 21:55:58