Вот моя идея. Я реализовал это на чистом JavaScript, но если это возможно в JS, это также возможно с GWT!
parent.html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Parent page</title>
<script type="text/javascript">
function openChild() {
window.mychild = window.open("print.html");
setTimeout('setContent();', 2000);
}
function setContent() {
window.mychild.document.body.innerHTML =
'<b>Here is your dynamically generated print content</b>';
// This could be produced by your main GWT module.
}
</script>
</head>
<body>
<a href="#" onclick="javascript:openChild()">Open child window</a>
</body>
</html>
print.html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Print view</title>
</head>
<body>
One moment please...
</body>
</html>
Обратите внимание, что я использовал тайм-аут. Это не идеально, потому что если (очень маленький) файл print.html будет загружаться дольше, он будет перезаписывать динамически установленное содержимое.
Полагаю, решение можно было бы оптимизировать (но убедитесь, что дочернее окно выбрано из того же источника, иначе вы столкнетесь с проблемами "политики одинакового происхождения").