通过后台打印程序打印作业时,Java应用程序会忽略配置设置

时间:2019-09-30 20:13:04

标签: java printing thermal-printer escpos spooler

我的Windows Java应用程序通过后台处理程序在热敏打印机上进行打印,而无需与打印对话框进行任何交互(使用下面的代码段)。

我不知道为什么,但是它会忽略“打印机属性”对话框中的设备配置设置(在Windows 7上,右键单击“打印机和设备”中的打印机)。在文档末尾发出蜂鸣声或切纸的设置将被忽略。

有专有的ESC / POS代码可用于实现相同的效果,但是其中一些仅适用于“直接协议”打印。我试图不使用它们,而是配置打印机属性,以简化对打印问题的疑难解答(尽管在这种情况下,我将采用直接协议作为最后的手段)。

如何使打印作业接受打印机属性配置设置?还是在必要时使用直接协议?

File file = File.createTempFile("order", "tmp");
try (PrintWriter printWriter = new PrintWriter(file)) {
    printWriter.print(textToPrint);
}
DocPrintJob dpj = printService.createPrintJob();
InputStream stream = new ByteArrayInputStream(textToPrint.getBytes(StandardCharsets.UTF_8));
HashDocAttributeSet attributes = new HashDocAttributeSet();
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc doc = new SimpleDoc(stream, flavor, attributes);
dpj.print(doc, new HashPrintRequestAttributeSet(new JobName("The Application", null)));
file.delete();

0 个答案:

没有答案