После дополнительных проб и ошибок я нашел это решение, которое частично решает мою проблему: https://stackoverflow.com/a/25486443/6919820
Однако, после закрытия диалогового окна печати, напечатанный макет остается своего рода наложением на мое предыдущее окно.Поэтому мой подход заключался в создании новой карты и копировании всех соответствующих данных из исходной.Затем распечатайте новую карту и затем уничтожьте ее.
buttonPrint.addClickHandler(event -> {
// mapPrintLayout contains my new MapWidget
print(mapPrintLayout.getElement().getInnerHTML());
mapPrintLayout.destroy();
});
public static final native void print(String html) /*-{
top.consoleRef=$wnd.open('','_blank', "", false);
top.consoleRef.document.write(html);
top.consoleRef.print();
top.consoleRef.close();
}-*/;
Это работает, но мой подход меня не убеждает.Может быть, есть лучшие способы сделать это.