Как напечатать некоторые элементы в 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 для вызова функции javascript printPage.

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.


person user1738224    schedule 25.08.2014    source источник
comment
Это должно быть похоже на HTML html=new HTML("<iframe id="+myframe+"></iframe>") ;? Я имею в виду добавление конкатенации строки с символом +   -  person Rudra Sisodia    schedule 25.08.2014
comment
попробуй так сказать "<iframe id=myframe></iframe>"   -  person Rudra Sisodia    schedule 25.08.2014
comment
когда я комментирую эту строку: body.innerHTML = myElement; просмотр может загрузить ее   -  person user1738224    schedule 25.08.2014
comment
что такое идмап?? пожалуйста, покажите вызов printpage!!!   -  person Rudra Sisodia    schedule 25.08.2014


Ответы (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()

}-*/;
person Andrei Volgin    schedule 25.08.2014
comment
Большое спасибо, это работает, но печатает только карту, а не объект на карте, я имею в виду, что у меня есть маркер, который показывает путь объекта, но не печатает этот путь. - person user1738224; 25.08.2014