【问题标题】:Printing from Java - the print jobs hangs forever从 Java 打印 - 打印作业永远挂起
【发布时间】:2011-04-12 11:07:09
【问题描述】:

我有一个服务器端打印功能,从 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 文档编写器”,它似乎在某些后台 shell 上下文中打开了一个窗口(服务器是一个以用户 Tomcat 运行的 Tomcat 5.5),并且永远挂在那里,我不知道是什么处理这种情况的最佳方法。

有什么想法吗?硬编码打印机名称并不允许在其上打印?停止()线程?这是一个本机函数,所以我不能用期望的结果中断()线程。

【问题讨论】:

  • 当您使用自己的 GC 打印时,它是 Java 的默认标准打印代码。

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


【解决方案1】:

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

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

我在网上看到了在 WS 2008 下允许用户交互的各种技术,但不能说它们是否适合您的应用程序的需求。

【讨论】:

    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 2016-08-14
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    相关资源
    最近更新 更多