2
我想發送一個PDF/DOC/ODT文件到使用javax.print連接到LAN的打印機,但它甚至不會將作業發送到打印隊列。我試圖打印「正常」文件(使用Adobe Reader/Open Office)並且工作完美,因此打印機連接良好。我也嘗試從代碼發送到虛擬打印機(PDFCreator),它工作。發送PDF文件到網絡打印機的Java
這裏是我正在使用的代碼:
public Boolean Imprimir (String filePath){
Boolean correct = true;
FileInputStream psStream = null;
try {
psStream = new FileInputStream(filePath);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
correct = false;
}
if (psStream != null) {
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc myDoc = new SimpleDoc(psStream, psInFormat, null);
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, aset);
PrintService myPrinter = null;
for (int i = 0; i < services.length; i++){
String svcName = services[i].toString();
if (svcName.contains("Xerox")){
myPrinter = services[i];
break;
}
}
if (myPrinter != null) {
DocPrintJob job = myPrinter.createPrintJob();
try{
job.print(myDoc, aset);
}
catch(PrintException ex){
ex.printStackTrace();
correct = false;
}
} else {
System.out.println("No printer services found");
correct = false;
}
}
else{
correct = false;
}
return correct;
}
打印機使用LPR協議連接。
在此先感謝
編輯:我也嘗試使用jLpr,如其他職位(Java printing directly to a Postscript network printer)建議。它也沒有工作,但沒有錯誤信息,作業沒有出現在打印機的隊列中。
我發現問題可能是打印機使用LPR協議連接。我嘗試將打印作業發送到與RAW協議連接的打印機,並且工作正常。我不會回答這個問題,因爲我仍然不知道如何處理LPR協議。 – Joel
你解決了你的問題嗎?你介意分享這個解決方案嗎?謝謝 –