Java原始Postscript打印,发送XPS_PASS(Windows特定)

use*_*242 5 java printing xps windows-8 windows-8.1

较新的XPS打印驱动程序(几乎所有Windows 8打印驱动程序)都需要DOCINFO.pDataType ="XPS_PASS"(而不是"RAW")来管理原始打印作业(Postscript/PCL/ZPL/etc).
(使用VC++将Postscript文档发送到打印机)
(如何使RawPrinterHelper在XPS_PATH和RAW数据类型中都能工作?)

除了使用像JNA之类的东西,有没有办法在Java applet /应用程序中执行此操作?
我可以使用JNA,并计划将其用于打印机管理,但我宁愿实际打印不必深入研究JNA - Win32 API领域.

注意:我还想避免直接管道到9100,串口等.使用已检测/配置的打印机更有意义.

解决方法:我已成功使用JNA和JOB_INFO发送"XPS_PASS".可以使用PRINTER_INFORMATION_4和DOCINFO_4/DOCINFO_8(自己实现结构)来检测是否应该发送XPS_PASS或RAW.请参阅C++示例

use*_*242 2

JNI是目前唯一的选择。可能应该作为错误报告提交给 Java 问题跟踪器。

JDK8源: http: //hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/windows/native/sun/windows/WPrinterJob.cpp#l999

JDK9源:http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/c0ed608fc7d2/src/java.desktop/windows/native/libawt/windows/WPrinterJob.cpp#l1060

不幸的是,这是不可能的,因为 DOCINFO.pDataType 被硬编码为“RAW”,并且 JVM 中似乎没有任何其他打印入口点。