我们在.net中为收据建立了一个mvc。我们编写了一个小applet,它在我们的视图中输入了一个url,并将在该url处生成的收据打印到用户默认打印机。
有一个特定收据不使用我们的mvc,因为它与销售无关,仅仅是服务的小费。此收据之间的主要区别在于显示其预览的页面(以及用于打印它的按钮)与applet用于打印它的页面相同。因此,applet实际上是获取预览的url,但在查询字符串中有一个额外的参数,告诉它除了提示滑动内容之外不再渲染任何内容。
这在所有浏览器上都可以在Windows上完美运行。然而,当我们切换到Mac时,尖端滑动仅打印约15%的时间,其余时间它只打印一小部分空白。这就好像applet没有从url获取内容,即使我通过浏览器链接到那个确切的url我得到了提示内容。
我认为这可能是一个时间问题。也许小程序不会等到呈现提示单。
这是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 :(得分:0)
在使用java.awt.EventQueue#invokeLater小程序处理所有事件之前,您是否尝试延迟打印?您甚至可以尝试触发等待1秒的线程,然后通过java.awt.EventQueue#invokeLater触发打印。
我不排除Mac上有缺陷的小程序打印。坦率地说,我从未见过人们通过小程序打印。
如果您发现在Mac上花费太多时间调试applet,我会考虑其中一个: