我們在.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