java - 从 Java 打印 - 打印作业永远挂起

标签 java printing windows-server-2008 tomcat5.5 xps-generation

我有一个服务器端打印功能,从 Windows 2008 服务器上的 Tomcat 调用,在这种情况下在默认打印机上打印,并且它永远挂起。这是堆栈跟踪:

at sun.awt.windows.WPrinterJob._startDoc(Native Method)
at sun.awt.windows.WPrinterJob.startDoc(WPrinterJob.java:1249)
at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1371)
at com.gnostice.pdfone.PdfPrinter.a(Unknown Source)
at com.gnostice.pdfone.PdfPrinter.print(Unknown Source)
at com.gnostice.pdfone.PdfPrinter.print(Unknown Source)
at de.ikoffice.print.PrintService.printPDF(PrintService.java:64)
at de.ikoffice.document.Document.printPDFToPrinter(Document.java:261)
at de.ikoffice.document.Document.start(Document.java:91)
at de.ikoffice.document.DocumentService.processMessage(DocumentService.java:48)

罪魁祸首是打印机“Microsoft XPS document writer”,它似乎在某些后台 shell 上下文中打开一个窗口(服务器是作为用户 Tomcat 运行的 Tomcat 5.5),并永远卡在那里,我不知道是什么处理这种情况的最好方法。

有什么想法吗?对打印机名称进行硬编码并禁止在其上打印? stop() 线程?它是一个 native 函数,因此我无法使用所需的结果来中断()线程。

最佳答案

我们在使用物理打印机时也遇到了类似的问题。根据我在网上读到的内容,Windows Server 2008 在没有用户界面的特殊 session 中运行服务,因此任何弹出窗口都会挂起应用程序。

您可以从服务器上删除 XPS Writer 并使用真正的打印机吗?或者明确检查 XPS Writer 并且不允许用户打印到它?

我在网络上看到过有关允许在 WS 2008 下进行用户交互的各种技术的提及,但无法确定它们是否适合您的应用程序的需求。

关于java - 从 Java 打印 - 打印作业永远挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5634198/

相关文章:

SwiftUI 打印 View

arrays - 在 D 中打印数组

java - 我的阵列没有上升

java - JTable 中的 BeansBinding 和 JTable 的 TableColumn

html - 添加样式表时打印 iframe 空白

c# - 在 context.Request 中解码查询字符串

ssl - 识别和禁用弱密码套件 Windows server 2008/IIS 7

java - 完全导入 Solr 时出现访问被拒绝错误

java - 无法正确排序我的数组列表

azure - VPN 访问 Azure 托管虚拟服务器