Как напечатать некоторые элементы в gwt
Я хочу напечатать одну панель страницы в GWT.
Однако кто-то сказал, что вы должны использовать iframe
потому что у него есть метод печати.
Я попробовал этот код, но он не работает:
HTML html=new HTML("<iframe id="myframe"></iframe>") ;....
searchButton.setWidth("80px");
searchButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
MyNative.printIframeContent("myframe", "onlineMap");
}
});
map = new SimplePanel();
map.getElement().setId("onlineMap");
map.add(mapView.getMapWidget());
mapView
. является экземпляром класса, который возвращает GWT MapWidget, и таким образом я хочу добавить карту GWT в iframe, а затем использовать возможность печати iframe для печати карты Google.
MyNative
класс, который использует GWT JSNI для вызова функции printPage javascript
function printPage(idMap,idFrame) {
var myElement = document.getElementById(idMap);
var iframe = document.getElementById(idFrame);
var body = iframe.getElementsByTagName('body');
body.innerHTML = myElement;
iframe.contentWindow.print();
}
но браузер не может загрузить тело iframe.
1 ответ
Решение
Вы можете попробовать это:
String html = myPanel.getElement().getInnerHTML();
print(html);
public static final native void print(String html) /*-{
top.consoleRef=$wnd.open('','_blank', "");
top.consoleRef.document.write(html);
top.consoleRef.print();
top.consoleRef.document.close()
}-*/;