2011-04-20 75 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

相關問題