Chrome で問題を再現できません。ただし、iframe のみを印刷しようとすると、Opera は実際に外側のページ全体を印刷します。
私は回避策を考案しましたが、ほとんどは機能しますが、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();
}
お役に立てれば。