2009-11-05 94 views
2

誰能告訴我如何打印gwt部件?打印gwt部件

我gont通過下面的線程和嘗試。

http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/eea48bafbe8eed63

不過我不能做that.I可以能夠打印部件沒有任何CSS style.I想包括CSS樣式(CSS文件)also.Thanks您的寶貴幫助。

+0

你爲什麼要這麼做?也許有另一種方法來實現你所需要的。 – sinelaw 2011-01-14 07:43:51

+0

@ sinelaw-我無法回答你的第一個問題。這取決於我的項目要求。更好的請發佈你的替代方式來解決這個問題。 – DonX 2011-01-17 09:43:51

+0

來自Google羣組的例子非常好。如果你想打印圖片,我建議你使用media =「print」。但不要忘記,許多瀏覽器默認都有禁用打印背景圖像的選項(例如在Firefox中:文件>頁面設置>選項>打印背景(顏色和圖片))。有沒有辦法用一個棘手的CSS或其他任何東西來覆蓋這個選項... – Naoj 2011-02-10 09:20:33

回答

0

我遇到了類似的情況,使用您使用過的相同鏈接。 它打印字符串,小工具或元素沒有任何問題。

我發現的解決方法是,在打印之前您需要一些延遲。

所以,有很少的替代解決方案。 1.寫下導致延遲2-3秒的循環。 2.使用時間延遲2-3秒 3.使用Window.Confirm問一些問題,如'您想打印嗎?'

希望這將有助於其他

0

您可以在應用程序中創建自己的類和打印按鈕的點擊,通過使用本機的打印方法,你可以調用Window.Print()。

GWT UIObject可用於此目的和方法,它將被轉換爲字符串。

public class NTPrint { 
    /** 
    * If true, use a Timer instead to print the internal frame 
    */ 
    public static boolean USE_TIMER = true; 

    /** 
    * Time in seconds to wait before printing the internal frame when using Timer 
    */ 
    public static int TIMER_DELAY = 1; 

    public static native void it() /*-{ 
     $wnd.print(); 
    }-*/; 

    public static void it(String html) { 
     try{ 
      buildFrame(html); 
      if (USE_TIMER) { 
       Timer timer = new Timer() { 
        public void run() { 
         printFrame(); 
        } 
       }; 
       timer.schedule(TIMER_DELAY * 1000); 
      } else { 
       printFrame(); 
      } 
     } 
     catch (Throwable exc) { 
      CommonUtil.printStackTrace(exc); 
      Window.alert(exc.getMessage()); 
     } 
    } 

    /** 
    * This method will be called when you pass Widget without style. 
    * @param uiObjects 
    */ 
    public static void it(UIObject...uiObjects) { 
     StringBuffer objString= new StringBuffer(); 
     for(UIObject obj: uiObjects) 
       objString.append(obj.toString()); 
      it("", objString.toString()); 
    } 

}打印按鈕的

的OnClick,

/** 
     * prints all forms 
     * @param documentInfo 
     */ 
     public static void printForms(List<FormTransaction> formTransactions, String documentInfo, List<CellTransaction> cellTransactionList, boolean isComment, Document document) { 
       String style = "<link rel='styleSheet' type='text/css' href='v4workflow/css/style.css'>" 
           + "<link rel='styleSheet' type='text/css' href='v4workflow/css/gwtcontrols.css'>" 
           + "<style type='text/css' media='print'>" 
           + "@media print {" 
           + ".footerText{font-size:13px; font-weight:normal;margin-top:0px;}" 
           + ".break {page-break-after:always}" 
           + "}" + "</style>"; 
       List<UIObject> uiObjects = new ArrayList<UIObject>(); 
       NTPrintLayout printLayout = new NTPrintLayout(); 
       printLayout.setSelectedDocument(null); 
       uiObjects.add(createHeader()); 
       NTPrint.it(style,uiObjects); 
     } 

public static FlexTable createHeader(){ 
       FlexTable flexTable = new FlexTable(); 
       flexTable.setWidth("100%"); 
       return flexTable; 
     }