2011-04-20 85 views
0

我们在.net中为收据创建了一个mvc。我们编写了一个小应用程序,它将url链接到我们的视图中,并将在该url处生成的收据打印到用户默认打印机。Applet在Windows上正常打印,但在Mac上不正常

有一个特定的收据不使用我们的mvc,因为它没有绑定到一个销售,而只是一个服务的小费。此收据之间的主要区别在于,显示预览的页面(以及打印它的按钮)与applet将用于打印的页面相同。所以,applet基本上会使用预览的url,但在查询字符串中带有一个额外的参数,告诉它不会呈现除了提示内容之外的其他任何内容。

这在任何浏览器上都可以在Windows上完美运行。但是,当我们切换到Mac时,小费只会打印约15%的时间,其余时间只打印一小片空白。就好像小程序没有从网址获取内容,即使当我通过浏览器链接到该确切的网址时,我也会收到小费单。

我在想这可能是一个计时问题。也许这个小程序不会等到小费单被渲染。

这是applet的打印方法的代码:

public void printDocument(final String url, final boolean ccInfo, 
     final boolean printDialog) 
{ 
     AccessController.doPrivileged(new PrivilegedAction<Object>() { 
     @Override 
    public Object run() 
    { 
     try 
    { 
     new ParserDelegator(); 

     JEditorPane jEditorPane = new JEditorPane(); 
     jEditorPane.setEditorKit(new HTMLEditorKit() { 
     @Override 
     public ViewFactory getViewFactory() 
      { 
      return new HTMLFactory() { 
      @Override 
      public View create(Element elem) 
      { 
       View view = super.create(elem); 
       if (view instanceof ImageView) 
      { 
       ((ImageView) view) 
       .setLoadsSynchronously(true); 
      } 
       return view; 
      } 
     }; 
    } 
    }); 

    jEditorPane.setPage(url); 
    JeditorRendererer docRenderer = new JeditorRendererer(); 
} 
catch (IOException e) 
{ 
    System.out.println("IO Exception"); 
    e.printStackTrace(); 
} 
catch (Exception e) 
{ 
    e.printStackTrace(); 
} 
    return null; 
} 

}); }

正如您所看到的,为了让我们的条形码不显示为破碎的图像图标,我重写了创建ImageView的方法,以便它同步加载它。有没有类似的其他HTML内容?收据将全部为html中的文本,底部为图片标签。

回答

0

您是否试图延迟打印,直到所有事件都由小应用程序使用java.awt.EventQueue#invokeLater处理?您甚至可以尝试启动等待1秒的线程,然后通过java.awt.EventQueue#invokeLater触发打印。

我不排除在Mac上打印马车小程序。坦率地说,我从来没有见过人们通过小程序打印。

如果你看到你在Mac上花费太多的时间调试applet的我会考虑这两个中的一个:在收到的HTML,可能需要使用生成的PNG图像的

  1. 布局,并让用户手动打印它们;甚至还有使用JavaScript从HTML页面调用打印功能的方法。
  2. 生成PDF文件并让它们下载 - 每个人都有一些打印PDF文件的方式。
+0

是的,我们已经有了在所有平台上打印收据的另一种方法。这对我们的用户来说应该是一个更简单的即时打印选项。除了Mac上的这一点,它的工作原理。我在那里已经有一段时间了,这是因为我之前有过图像加载问题。即使在7秒钟的时候,提示滑动在Mac上也不起作用。我完全没有意识到为什么它不起作用。 – Acquire 2011-04-20 21:20:56

+0

当然你知道你可以从HTML页面启动“打印”功能,就像Google Maps一样?听起来很容易...... – 2011-04-20 23:04:13

+0

是的,这就是我刚才所说的。我们已经有了一个允许用户打印的方法。问题是我不想让打印对话框弹出。我希望他们能够点击一个按钮,并立即打印到他们的默认打印机。这是我们小程序的全部要点。它在苹果机上的这些提示单下工作。 – Acquire 2011-04-21 00:59:15

相关问题