誰能告訴我如何打印gwt部件?打印gwt部件
我gont通過下面的線程和嘗試。
http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/eea48bafbe8eed63
不過我不能做that.I可以能夠打印部件沒有任何CSS style.I想包括CSS樣式(CSS文件)also.Thanks您的寶貴幫助。
誰能告訴我如何打印gwt部件?打印gwt部件
我gont通過下面的線程和嘗試。
http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/eea48bafbe8eed63
不過我不能做that.I可以能夠打印部件沒有任何CSS style.I想包括CSS樣式(CSS文件)also.Thanks您的寶貴幫助。
我遇到了類似的情況,使用您使用過的相同鏈接。 它打印字符串,小工具或元素沒有任何問題。
我發現的解決方法是,在打印之前您需要一些延遲。
所以,有很少的替代解決方案。 1.寫下導致延遲2-3秒的循環。 2.使用時間延遲2-3秒 3.使用Window.Confirm問一些問題,如'您想打印嗎?'
希望這將有助於其他
您可以在應用程序中創建自己的類和打印按鈕的點擊,通過使用本機的打印方法,你可以調用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;
}
你爲什麼要這麼做?也許有另一種方法來實現你所需要的。 – sinelaw 2011-01-14 07:43:51
@ sinelaw-我無法回答你的第一個問題。這取決於我的項目要求。更好的請發佈你的替代方式來解決這個問題。 – DonX 2011-01-17 09:43:51
來自Google羣組的例子非常好。如果你想打印圖片,我建議你使用media =「print」。但不要忘記,許多瀏覽器默認都有禁用打印背景圖像的選項(例如在Firefox中:文件>頁面設置>選項>打印背景(顏色和圖片))。有沒有辦法用一個棘手的CSS或其他任何東西來覆蓋這個選項... – Naoj 2011-02-10 09:20:33