我正在尝试获取有关系统上打印机的一些信息。
在Windows和Linux上,使用以下代码,仅PrinterName
填充属性:
PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null,null);
for( PrintService printService : printServices ) {
log.info("Found print service: "+printService);
log.info(printService.getAttribute(PrinterName.class));
log.info(printService.getAttribute(PrinterLocation.class));
log.info(printService.getAttribute(PrinterMakeAndModel.class));
log.info(printService.getAttribute(PrinterMessageFromOperator.class));
log.info(printService.getAttribute(PrinterMoreInfo.class));
log.info(printService.getAttribute(PrinterMoreInfoManufacturer.class));
log.info(printService.getAttribute(PrinterState.class));
log.info(printService.getAttribute(PrinterStateReasons.class));
log.info(printService.getAttribute(PrinterURI.class));
}
在使用该toArray()
功能之后…
log.info("Found print service: "+printService);
for( Attribute a : printService.getAttributes().toArray() ) {
log.info("* "+a.getName()+": "+a);
}
…这是结果:
找到的打印服务:Win32打印机:Brother MFC-9420CN BR-Script3
*支持颜色:支持
*打印机名称:Brother MFC-9420CN BR-Script3
*打印机正在接受工作:正在接受工作
*排队人数:0
如何获得更多信息 ,例如打印机注释?
还有其他PrintServiceAttribute
实现,但是如果您想获取更多…
这只是一个 肮脏的 代码,您还可以获取不受支持的doc值:
PrintService[] printServices =
PrintServiceLookup.lookupPrintServices(null, null); //get printers
for (PrintService printService : printServices) {
System.out.println("Found print service: " + printService);
Set<Attribute> attribSet = new LinkedHashSet<Attribute>();
Class<? extends Attribute>[] supportedAttributeCategories = (Class<? extends Attribute>[]) printService.getSupportedAttributeCategories();
for (Class<? extends Attribute> category : supportedAttributeCategories) {
DocFlavor[] flavors = printService.getSupportedDocFlavors();
for (DocFlavor flavor : flavors) {
Object supportedAttributeValues = printService.getSupportedAttributeValues(category, flavor, printService.getAttributes());
if (supportedAttributeValues instanceof Attribute) {
Attribute attr = (Attribute) supportedAttributeValues;
attribSet.add(attr);
} else if (supportedAttributeValues != null) {
Attribute[] attrs = (Attribute[]) supportedAttributeValues;
for (Attribute attr : attrs) {
attribSet.add(attr);
}
}
}
}
for (Attribute attr : attribSet) {
System.out.println(attr.getName());
System.out.println(printService.getDefaultAttributeValue(attr.getCategory()));
}
}
注意: 您可能会看到重复的值,但是可以对其进行过滤。
name String - 名称 description String - 描述 status Number - 状态 isDefault Boolean - 是否默认打印机 options Object - 附加字段 例子: 1 name: 'Zebra_LP2844', 2 description: 'Zebra LP2844', 3 status: 3, 4 isDefault: false
我在标签打印机上打印时遇到了问题。下面的代码在一个上打印4个“标签”(附标签图片)。 下面的代码打印到兄弟QL-500标签打印机上。它打印到3.5"乘1.1"标签上。 如果有人能帮我更好地理解代码,那也太好了。 下面是它打印的内容:
问题内容: Java中有一种简单的方法可以执行以下操作吗? 连接到打印机(将是本地打印机,并且是连接到机器的唯一打印机)。 在2个不同的打印机纸盘中打印2页的页面。 获取当前的打印队列计数,即我有100项要打印的项目和34项当前已打印,则打印机队列现在应显示为66。 问题答案: 一些快速提示: 从Java打印:请参阅基本打印程序 打印作业的状态:您可以使用PrintJobListener获得一些有
我需要发送一个pdf文件打印在一个网络应用程序的服务器端,打印机完全支持pdf打印等,它是网络以及服务器。pdf也存储在服务器上。 我尝试的是点击一个按钮,打印出pdf文件,目前我有以下代码: 但我有几个问题,我如何将pdf放入输入流以打印出来,我可以选择诸如双面打印之类的选项,以及如何从JSF web应用程序中调用它 谢谢
Vimscript中,我们最先关注的是echo和echom命令。 你可以在Vim中执行:help echo和:help echom命令以查看其帮助文档。读完本书之后, 再次遇到新的命令时,你应该先执行:help命令查看其帮助文档。 执行如下命令,体验echo命令: :::vim :echo "Hello, world!" 你应该会在屏幕的底部看到Hello, world!被打印出来。 还是打印消
在我的项目中,客户需要使用POS打印机打印收据,这可以使用JAVA POS来完成。我在网上搜索没有任何有用的材料,但发现 1.javapos 2.jpos 可以有人请指导我应该进行JAVA POS或JPOS。 该应用程序基于Java Swing desktop而不是基于web。 真的坚持这一点,任何帮助都是非常有用的