2011-03-29 117 views
2

我上傳&在SQL中保存PDF。然後人們可以在網頁瀏覽器(IE)中打開該PDF。今天我更新了Acrobat Reader,並且無法在網絡瀏覽器中打開相同的PDF。我可以將它保存到桌面上然後打開它。有一個在對話框中沒有【打開】按鈕,它說,文件可能已損壞無法在Internet Explorer中打開動態PDF文件

名稱:admin.pdf

類型:使用Adobe Acrobat文檔,37.8 KB

來源:domain.com

*

動態生成的PDF」鏈接是象下面這樣: http://domain.com/admin.asp?cmd=Download_PDF&id=20112

我所做的每解決方案都在Adobe的網站上。我無法直接在IE8中打開PDF文件。

我的前ASP代碼爲:

Response.ContentType = rsFile("filetype") 
    Response.BinaryWrite rsFile("filedata") 

然後,我只是改變了它,使PDF作爲可下載的文件,現在我可以-AT最不下載&外部的Acrobat Reader(對話框顯示打開[打開] [下載] [關閉]按鈕):

Response.Buffer = TRUE 
    'Response.ContentType = "application/pdf" 
    Response.ContentType = rsFile("filetype") 
    Response.AddHeader "Content-Disposition", "attachment; filename=" & filename & ".pdf"  
    Response.BinaryWrite rsFile("filedata") 
+0

[在HTTP請求上創建的PDF不會在Internet Explorer中打開]的可能重複(http://stackoverflow.com/questions/12625108/pdf-created-on-http-request-wont-open-in-internet -explorer) – Dijkgraaf 2014-11-12 22:43:40

+0

以上管理的重複問題的解決方案通過將緩存控制設置爲max-age = 1而不是無緩存來實際解決了問題 – Dijkgraaf 2014-11-12 22:53:00

回答

1

爲什麼你的PDF沒有在瀏覽器中打開是因爲的Adobe Reader的新的安裝不註冊爲IE插件的原因。也許舊的插件需要先被移除。

如果某個特定版本的Adobe Reader沒有打開PDF,那麼可能是PDF已損壞。確保您的ASP代碼緊密排列,並且您不會錯誤地在瀏覽器中寫入空格或換行符。記得在最後調用Response.Flush。

如果您添加附件標題,則會顯示文件保存對話框,PDF插件將不會捕獲瀏覽器中的PDF。

您的瀏覽器也可能正在從緩存中加載舊的PDF損壞副本。清空您的IE緩存(臨時Internet文件)。

+0

2個不同的計算機無法打開嵌入的pdf文件。我們都試過重新安裝/修復/卸載/重新啓動/等。我們可以保存相同的PDF文件然後打開它,所以文件損壞並不重要。 有些人警告我說他無法打開pdf文件作爲嵌入。我第一次可以。然後我的Acrobat Reader已經更新。我的下一次嘗試失敗了。 在Acrobat Reader和IE8設置中,一切似乎都可以打開PDF作爲嵌入。 任何人都可以驗證並提供打開PDF的鏈接,以便檢查我的瀏覽器和閱讀器嗎? – 2011-03-29 13:30:09

+0

現在我確認了Chrome可以打開與嵌入相同的PDF。我不知道它是Acrobat Reader插件還是Chrome的內部PDF閱讀器。 HTML源代碼說,Chrome生成一個HTML頁面並嵌入PDF ... – 2011-03-29 13:46:54

4

我今天偶然發現了這個完全相同的問題,並挖出了一個解決方案。

我們還有一個網站提供存儲在SQL數據庫中的pdf。當aspx頁面嘗試提供pdf時,它會顯示與您描述的對話框完全相同的對話框。它隻影響IE8(這裏沒有人可以測試任何其他版本的IE); Chrome,Firefox和Safari的最新版本都在瀏覽器中正常加載了PDF文件。

所以之後我發現你的問題,我周圍挖一些,並發現:

http://forums.adobe.com/thread/792591

使用Adobe Reader 9.4.2開始,錯誤被引入有關的字符集,使得如果Content-Type具有字符集值,則adobe將最終查找不存在的註冊表項。

我做了什麼jspraul響應17建議,並補充說:

Response.Charset = null;

和你一樣,我只是把我的內容類型應用程序/ PDF格式,而是因爲我Response.Charset的有一個值UTF-8默認情況下,Adobe正在查找與UTF-8相關的註冊表項並且無法找到它。希望adobe能夠在某些時候修補這個問題,但是這應該能夠在此期間解決您的問題。

相關問題