Java-приложение для печати на сетевом принтере - PullRequest
1 голос
/ 01 февраля 2012

Я работаю над примером приложения для печати файла на сетевом принтере.Но я не могу добиться успеха.Ребята, пожалуйста, помогите мне избавиться от этой проблемы.

</p>

<pre><code>FileInputStream fis = new FileInputStream(file);
if (fis == null) {
System.out.print("No File");
return;
}
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();

PrintService service = PrintServiceLookup.lookupDefaultPrintService();

aset.add(new PrinterName("ipp:\\witnw21va\ipp\ITDepartment-HP4050", null));
//PrintServiceAttributeSet aset = HashPrintAttributeSet();
PrintService[] pservices = PrintServiceLookup.lookupPrintServices(flavor, aset);

if (service != null){
System.out.println("Default Printer: " + service.getName());

// Creating DocPrintJob
DocPrintJob job = service.createPrintJob();
try{
Doc doc = new SimpleDoc(fis,flavor,null);

PrintJobWatcher pjDone = new PrintJobWatcher(job);

job.print(doc,aset);

// Wait for the print job to be done
pjDone.waitForDone();

fis.close();
}

Большое спасибо.

1 Ответ

2 голосов
/ 01 февраля 2012

Этот код не скомпилируется, потому что в имени принтера указаны недопустимые escape-последовательности :

new PrinterName("ipp:\\witnw21va\ipp\ITDepartment-HP4050", null)

Компилятор Java считает, что вы пытаетесь написать специальные символы, такие как символ новой строки \n, и в этой строке смущены \w, \i и т. Д., Что недопустимо.

Вам необходимо экранировать каждый обратный слеш, чтобы сделать его допустимым:

new PrinterName("ipp:\\\\witnw21va\\ipp\\ITDepartment-HP4050", null)

или измените его, если оно должно быть на самом деле косой чертой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...