2016-11-18 324 views
8

我必須在新選項卡中顯示base64 pdf。我正在使用下面的代碼如何顯示base64編碼的pdf?

var windo = window.open("", ""); 
var objbuilder = ''; 
objbuilder += ('<embed width=\'100%\' height=\'100%\' src="data:application/pdf;base64,'); 
objbuilder += (fileData); 
objbuilder += ('" type="application/pdf" />'); 
windo.document.write(objbuilder); 

它在FireFox中工作,而不是在Chrome和IE中工作。我甚至嘗試過使用標籤,但輸出相同,在FF中工作,但不在Chrome和IE中使用。

我看着下面JsFiddles,爲此,在FF正在努力,但無法在Chrome中,

http://jsfiddle.net/yLx2W/

http://jsfiddle.net/yLx2W/1/

我的Chrome版本:版本54.0.2840.99米

火狐版本:49.0.2

有沒有人有任何想法,請分享。

由於提前

回答

2

應該與Chrome瀏覽器可以使用<iframe src="data:base64"..>或使用<object data="data:base64..." ...>

我已經面臨同樣的問題,與IE這是不可能與一個base64 我顯示PDF格式必須在服務器上生成臨時文件以便與他們進行顯示IE他只有顯示現有文件

嘗試使用JS庫以顯示您的pdf,如PDF.js

+0

我試過對象和iframe也試過URIdata,但在Chrome 沒有工作你可以看到下面JSFiddles, http://jsfiddle.net/yLx2W/ http://jsfiddle.net/yLx2W/1/ – dnyaneshwar

+0

您的示例在Chrome中不適用於JSFiddle – Alexis

+1

對我而言,它在Chrome中顯示空白窗口。 – dnyaneshwar

3

對於那些誰仍然不能做到這一點,我發現這個在別人的答案,但我不記得是誰...

var objbuilder = ''; 
objbuilder += ('<object width="100%" height="100%" 
data="data:application/pdf;base64,'); 
objbuilder += (myBase64string); 
objbuilder += ('" type="application/pdf" class="internal">'); 
objbuilder += ('<embed src="data:application/pdf;base64,'); 
objbuilder += (myBase64string); 
objbuilder += ('" type="application/pdf" />'); 
objbuilder += ('</object>'); 

var win = window.open("#","_blank"); 
var title = "my tab title"; 
win.document.write('<html><title>'+ title +'</title><body style="margin-top: 
0px; margin-left: 0px; margin-right: 0px; margin-bottom: 0px;">'); 
win.document.write(objbuilder); 
win.document.write('</body></html>'); 
layer = jQuery(win.document); 

這樣,我們打開一個新的選項卡中的PDF文件。