Я не могу воспроизвести вашу проблему с Chrome. Однако Opera действительно печатает всю внешнюю страницу, пытаясь распечатать только iframe.
Я разработал обходной путь, и хотя он работает в основном, он не на 100% безопасен (среди прочего, потому что Opera переносит строки для печати; я не знаю, как рассчитать правильную высоту в таких случаях). Тем не менее, следующий код работает как минимум разумно (для удобства используется jQuery):
if ($.browser.opera) {
var ifr = $('#youriframe');
var ifrbody = ifr.get(0).contentDocument.body;
var sheet = $([
'<style type="text/css" media="print">',
'body * {',
' display: none;',
'}',
'#youriframe {',
' border: none;',
' display: block;',
' height: ', ifrbody.scrollHeight, 'px;',
' margin: 0px;',
' padding: 0px;',
' width: ', ifrbody.scrollWidth, 'px;',
'}',
'<\/style>'
].join(''));
$('head').append(sheet);
window.print();
sheet.remove();
}
Надеюсь, это поможет.