javax.print を使用して LAN に接続されたプリンターに PDF/DOC/ODT ファイルを送信しようとしていますが、ジョブが印刷キューに送信されません。ファイルを「通常どおり」 (Adobe Reader /Open Office を使用して) 印刷しようとしましたが、問題なく動作するため、プリンターは適切に接続されています。また、コードから仮想プリンター (PDFCreator) に送信しようとしましたが、うまくいきました。
私が使用しているコードは次のとおりです。
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はPostscriptネットワークプリンターに直接印刷します)。どちらも機能しませんでしたが、エラーメッセージは表示されず、ジョブはプリンターのキューに表示されません。