Я пытался определить, способен ли принтер печатать файл Postscript (.ps).Используя следующий метод, я попытался определить, может ли принтер напечатать Postscript со следующим кодом:
private void findPrinters( DocFlavor flav ) {
PrintService[] services = PrintServiceLookup.lookupPrintServices( flav, null );
System.out.println( flav );
if ( services != null && services.length != 0 ) {
System.out.println( "SUPPORTED:" );
for ( PrintService service : services ) {
System.out.println( service );
}
} else {
System.out.println( "NOT SUPPORTED" );
}
}
Я прошел его DocFlavor.INPUT_STREAM.POSTSCRIPT
или DocFlavor.BYTE_ARRAY.POSTSCRIPT
, и он вернет Win32 Printer : HP LaserJet 2300L PS
и Win32 Printer : CutePDF Writer
(оба являются «виртуальными» принтерами - первый используется для создания PDF, а второй - для создания Postscript).После установки «Универсального драйвера печати HP для Windows PostScript» Win32 Printer : HP Universal Printing PS
отображается как поддерживающий Postscript.Однако я не уверен, используется ли этот драйвер или нет, поэтому я понимаю, что ни один из других подключенных принтеров не может печатать файл Postscript.
Затем я попытался передать файл Postscript в файлпара подключенных принтеров со следующим примером кода:
FileInputStream in = null;
PrintService prnSvc = PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob printJob = prnSvc.createPrintJob();
Doc doc;
in = new FileInputStream( "some.ps" );
if ( prnSvc.isDocFlavorSupported( DocFlavor.INPUT_STREAM.POSTSCRIPT ) ) {
/* USE THIS FOR A PS-capable printer */
doc = new SimpleDoc( in, DocFlavor.INPUT_STREAM.POSTSCRIPT, null );
} else {
/* USE THIS FOR OTHER PRINTER */
doc = new SimpleDoc( in, DocFlavor.INPUT_STREAM.AUTOSENSE, null );
}
printJob.print( doc, null );
Он будет правильно печататься на принтерах с поддержкой Postscript, а также на одном из сетевых принтеров (HP LaserJet P4014N), который, по словам Java, не имеет Postscriptслужба поддержки.На моем чековом принтере он будет печатать файл Postscript, как если бы он был просто текстом.Мне было предложено, чтобы сетевой принтер не отвечал правильно на Java (общие драйверы и т. Д.) И что он действительно мог поддерживать Postscript.Я просмотрел документацию, но не смог определить, поддерживает ли LaserJet P4014N Postscript или нет.Я нашел другой принтер (HP Laserjet 2055dn) и подключил его к компьютеру через USB, и Java по-прежнему сообщает, что он не поддерживает Postscript, несмотря на то, что может печатать его вышеуказанным способом.
Может быть, я делаючто-то не так?Если нет, то как правильно определить, поддерживает ли принтер Postscript?Моя конечная цель - определить, имеет ли принтер поддержку Postscript или нет, если он не конвертирует Postscript в JPG (потеря разрешения, но в источнике есть изображения) и распечатать его.Если у вас есть предложения по печати файла Postscript на принтере, не поддерживающем PostScript, я бы очень хотел это услышать!Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Я нашел несколько примеров файлов Postscript здесь , которые вы могли бы использовать.