window.frames.pdfFrame.print(); Try this one: function PdfUtil(url) { var iframe; var __construct = function(url) { iframe = getContentIframe(url); } var getContentIframe = function(url) { var iframe = document.createElement('iframe'); iframe.src = url; return iframe; } this.display = function(parentDomElement) { parentDomElement.appendChild(iframe); } this.print = function() { try { iframe.contentWindow.print(); } catch(e) { throw new Error("Printing failed."); } } __construct(url); } And you can use it as follows: var pdf = new PdfUtil(PDF_URL); pdf.display(document.getElementById('placeholder')); document.getElementById('printBtn').onclick = function() { pdf.print(); } Obviously, though PDF_URL here is a "constant", in your case it should most probably be generated. Works perfectly with IE8 and Chrome (should work also with other browsers). Also, the OO approach makes it far more maintainable and/or reusable. Slight modifications to the actual logic might still be required to fit all your needs. ------------ Code snippet to Load PDF into iframe and call print. Also see: 10 JQUERY PRINT PAGE OPTIONS. jQuery(document).ready(function($) { function print(url) { var _this = this, iframeId = 'iframeprint', $iframe = $('iframe#iframeprint'); $iframe.attr('src', url); $iframe.load(function() { _this.callPrint(iframeId); }); } //initiates print once content has been loaded into iframe function callPrint(iframeId) { var PDF = document.getElementById(iframeId); PDF.focus(); PDF.contentWindow.print(); } }); --- The following works for me in Firefox 11: (das ist die #id) window.frames.loyaltyBadge.focus(); window.frames.loyaltyBadge.print();