2011-05-03 125 views
1

在JavaScript中,我有一個變量,它包含base64中的pdf(pdf是在flex中生成並傳遞給js)。我想在瀏覽器中打開它(即,我希望瀏覽器顯示允許用戶打開或保存pdf的打開/保存對話框)。在IE6中打開JavaScript中的base64 PDF

我使用Data URI在某些瀏覽器工作正常,但不支持在IE 6/7:

function getPdf(pdf) { 
    window.open("data:application/pdf;base64," +pdf); 
} 

我怎樣才能得到這個PDF在IE6和7中打開?我已經讀過關於MHTML作爲數據uri的替代方法,但我認爲它不能做我需要的,或者可以嗎?現在我只需要打開pdf,但將來我可能還需要添加對xls(MS Excel)文件的支持。目前我正在使用Flash的Filereference.save讓用戶將PDF保存到磁盤,然後他可以打開它,但客戶端堅持讓用戶選擇自動打開它,而不是強迫他先保存它。

+0

Adob​​e AIR中的PDF控件是一個選項還是使用Google Chrome Frame for IE:http://code.google.com/chrome/chromeframe/? – 2011-05-03 20:09:51

+0

不,我沒有使用AIR,將來我還需要支持其他文件類型,所以我正在尋找一個通用的解決方案,而不是PDF特定的解決方案。客戶肯定會拒絕任何需要在其瀏覽器上安裝插件的解決方案。 – supercooldude 2011-05-03 20:16:43

回答

1

在IE中無法將其發送到服務器並重定向到響應頁面,這是不可能的。如果您正在生成PDF,則應該爲IE生成適當的HTML。

+0

如果你不想重定向,你甚至可以在頁面上有一個iframe自動從服務器上下載pdf。 – 2011-05-03 20:23:30

+0

當PDF數據在客戶端時,iframe會有什麼幫助? – 2011-05-03 20:25:11

+0

我以爲這就是你所指的,因爲它不是我會在下面單獨回答。 – 2011-05-03 20:30:15

0

您可能想要考慮這個選擇:讓Flex將PDF文件發送到服務器,然後在頁面上有一個iframe自動從服務器加載該文件。這是圍繞IE6問題的一個回合。