Java 原始 Postscript 打印,发送 XPS_PASS(Windows 具体)

Java raw Postscript printing, sending XPS_PASS (Windows specific)

较新的 XPS 打印驱动程序(几乎所有 Windows 8 打印驱动程序)需要 DOCINFO.pDataType = "XPS_PASS"(而不是 "RAW")来传输原始打印作业(Postscript/PCL/ZPL/etc).
(Send Postscript Document to Printer using VC++)
(How to make RawPrinterHelper work in both XPS_PATH and RAW data types?)

除了使用像 JNA 这样的东西,有没有办法在 Java applet/application 中做到这一点?
我可以使用 JNA,并计划将其用于打印机管理,但我宁愿实际打印不必深入 JNA - Win32 API 领域。

注意:我还想避免直接连接到 9100、串行端口等。使用已经 detected/configured 台打印机更有意义。

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

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 中似乎没有任何其他打印入口点。