我们在.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中的文本,底部为图片标签。
是的,我们已经有了在所有平台上打印收据的另一种方法。这对我们的用户来说应该是一个更简单的即时打印选项。除了Mac上的这一点,它的工作原理。我在那里已经有一段时间了,这是因为我之前有过图像加载问题。即使在7秒钟的时候,提示滑动在Mac上也不起作用。我完全没有意识到为什么它不起作用。 – Acquire 2011-04-20 21:20:56
当然你知道你可以从HTML页面启动“打印”功能,就像Google Maps一样?听起来很容易...... – 2011-04-20 23:04:13
是的,这就是我刚才所说的。我们已经有了一个允许用户打印的方法。问题是我不想让打印对话框弹出。我希望他们能够点击一个按钮,并立即打印到他们的默认打印机。这是我们小程序的全部要点。它在苹果机上的这些提示单下工作。 – Acquire 2011-04-21 00:59:15