2014-10-01 381 views
3

我想打印在Iframe中即時生成的PDF,但無法打印此PDF文件。這就是我現在所擁有的,我做錯了什麼?在Google Chrome上運行良好,但在IE 11上運行得不錯。請幫助我完成這項工作。在此先感謝打印使用PDF生成PDF的iframe IE 11

這是HTML標記

<div id="contractFrameContainer" class="modal-body row">   
    <iframe id="contractIframe" name="contractIframe" width="100%" src=""></iframe> 
</div> 

這裏是我的JavaScript在那裏我分配與動態URL的iframme的src(此URL生成PDF)

var url = currentUrl + '/contracts/createpdf?ProductId=' + Id + '&type=' 
            + Type + '&term=' + Term 
            + '&deductible=' + Deductible 
            + '&key=' + OrderNumber 
            + '&financedAmount=' + financedAmount 
            + '&downpayment=' + downpayment 
            + '&apr=' + apr 
            + '&tire=' + tireRotation 
            + '&interval=' + interval 
            + '&salesPrice=' + salesPrice 
            + '&dealerCost=' + DealerCost 
            + '&mileage=' + Mileage 
            + '&serviceDate=' + serviceDate 
            + '&penSurcharges=' + penSurcharges 
            + '&price=' + Price; 

     var iframe = document.getElementById("contractIframe"); 
     iframe.height = heightBody;   
     iframe.src = url; 

而且終於在這裏我試圖打印

document.getElementById('contractIframe').focus(); 
document.getElementById('contractIframe').contentWindow.print(); 

在IE 11上,這給我發電子郵件RROR「無效調用對象」

我想這也沒有成功:

window.frames["contractIframe"].focus(); 
window.frames["contractIframe"].print(); 
+0

有什麼解決辦法嗎? – SwR 2016-04-27 10:14:13

+0

看看我的解決方案:) – martinezjc 2016-04-27 14:27:54

回答

0

我的解決方法是首先生成PDF(保存到磁盤),然後使用生成的URL,並把它變成一個<embed>對象(這樣,你就可以使用IE瀏覽打印方法)

var ua = window.navigator.userAgent, 
     msie = ua.indexOf("MSIE "), 
     obj = null; 

// Generate the embed object for IE 
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) { 
     obj = document.createElement('embed'); 
     obj.setAttribute("type", "application/pdf"); 
     obj.setAttribute("id", "pdf1"); 
     obj.style.width = '100%'; 
     obj.height = heightBody + 'px'; 
     obj.setAttribute("src", url); // here set the url for generated pdf file 
} 

// Place this where you print the embed (button, link...) 
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) { 
    document.getElementById('pdf1').print(); 
} 

對於其他瀏覽器如Chrome,你可以使用相同的方法(保存文件到硬盤),並使用iframe(這工作)

obj = document.createElement('iframe'); 
obj.setAttribute("type", "application/pdf"); 
obj.setAttribute('id', 'pdf2'); 
obj.setAttribute('src', url); 
obj.style.width = '100%'; 
obj.height = heightBody + 'px'; 

在打印按鈕,你可以把這個:

document.getElementById('pdf2').contentWindow.print(); 

希望這有助於別人