gpt4 book ai didi

java - Railo Java 打印

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:22 24 4
gpt4 key购买 nike

我正在尝试获取一个程序来将标签打印到连接到服务器的打印机 (USB) 上。我已经能够从批处理文件打印到它,但由于某种原因,打印命令在 coldfusion 执行命令中失败。我目前的解决方案是通过 Java 访问打印机。这个解决方案的问题是我无法调用其中任何一个 java 方法。

解决方案基于此答案 How to print strings with line breaks in java

以下代码部分似乎工作正常。

var printService = createObject("java","javax.print.PrintService");
var printServiceLookup = createObject("java","javax.print.PrintServiceLookup");
var docFlavor = createObject("java","javax.print.DocFlavor");
writeDump( printService.init() );
writeOutput('<hr>');
writeDump( printServiceLookup );
writeOutput('<hr>');
writeDump( docFlavor );

当我尝试执行刚创建的对象中存在的任何方法时,问题就来了。

当我尝试执行时

writeDump( DocFlavor.STRING.TEXT_PLAIN );

我得到:

Application Execution Exception
Error Type: java.lang.NoSuchMethodException : 0
Error Messages: No matching Constructor for javax.print.DocFlavor() found

请记住,我正在尝试将一组 ZPL 打印命令发送到连接到计算机的打印机。如果能够通过套接字成功执行此操作,但还需要能够通过本地连接的打印机执行此操作。因此,只要它们适用于 Railo 和 Windows,替代解决方案是可以接受的。

更新:2013 年 4 月 3 日

var printer = javacast("null","");
var printers = printServiceLookup.lookupPrintServices( javacast("null",""), javacast("null","") );
for( var i=1; i le ArrayLen( printers ); i++ ) {
if( printers[i].getName() eq printername ) {
printer = printers[i];
break;
}
}

if( i gt ArrayLen( printer ) ) {
throw('Printer #printername# was not found');
}

var Job = printer.createPrintJob();
var LabelCmdbytes = javaCast( "byte[]", javaCast( "String", LabelCmd ).getBytes() );
var Labeldoc = Doc.init( LabelCmdbytes, printer.getSupportedDocFlavors()[1].AUTOSENSE, javacast("null","" ) );
Job.print( Labeldoc, javacast("null","")

此解决方案有效,但我认为 printer.getSupportedDocFlavors()[1].AUTOSENSE 不是 DocFlavor 值的最佳解决方案。环境是 Windows 7 和 Railo 4.1.x

最佳答案

实际上 DocFlavor.STRING是一个嵌套类。所以你需要使用 $ 来获取对它的引用:

StringFlavor = createObject("java","javax.print.DocFlavor$STRING");   

然后您可以访问公共(public)字段:

writeDump( StringFlavor.TEXT_PLAIN );

旁注,printService.init() 应该不起作用。 PrintService是一个接口(interface),不能被实例化。所以调用 init() 应该会抛出一个错误。

关于java - Railo Java 打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22823438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com