2010-05-26 72 views
2

我正在使用自定義WebPart,爲此我需要應用程序頁面來呈現PDF文件。顯示PDF - 應用程序頁面SharePoint

我目前使用以下鏈接http://support.microsoft.com/kb/306654

它工作正常,在ASP.NET,但在SharePoint中給出了一個空白頁。

下面的代碼: (PDF文件在同一目錄)

 Response.ClearContent(); 
     Response.ClearHeaders(); 
     //Set the appropriate ContentType. 
     Response.ContentType = "Application/pdf"; 
     //Get the physical path to the file. 
     string FilePath = MapPath("Test.pdf"); 
     //Write the file directly to the HTTP content output stream. 
     Response.WriteFile(FilePath); 
     Response.Flush(); 
     Response.End(); 

工作於它的最後幾個小時,讓我瘋了...任何想法?

+0

問題可能是這一行:string FilePath = MapPath(「Test.pdf」); 。你確定文件存在嗎(當在sharepoint下運行時)? – 2010-05-26 01:45:41

+0

@Raj:這不是問題。文件在同一個文件夾中。另外,如果我使用Byte數組編寫PDF,它在ASP.NET中工作,我面臨同樣的問題。 – spt3210 2010-05-26 13:05:51

+0

我意識到它可以在ASP.NET中使用,但是您的Web部件甚至在Sharepoint中執行?刪除Web部件中的所有代碼並放入Response.Write(「hello」)。該行是否執行? – 2010-05-26 16:08:09

回答

1

幾個想法:

  1. 如果文件中的SharePoint目錄,爲什麼不直接重定向到它的URL?

  2. 如果您使用Fiddler(或Firebug)查看HTTP流量 - 您是否看到內容類型更改?什麼是內容(是否爲PDF?)

  3. SharePoint和ASP.NET之間的主要區別(假設您正確地獲取文件)是頁面生命週期略有不同,安全模型。你可能想看看Reponse.End()如何工作,以確保它在SharePoint中沒有不同。您可以在詳細日誌記錄中運行SharePoint,然後在SharePoint dll上使用.NET Reflector(將日誌作爲指南),以查看是否有某種奇怪的方式來處理此問題。 SharePoint dll具有相當寬鬆的日誌調用。更多的信息在這裏:http://www.andrewconnell.com/blog/archive/2008/06/11/SharePoint-Debugging-and-Logging-Tips-and-Tricks.aspx

  4. 你有沒有考慮柵格化PDF並在頁面中直接顯示它?這是我們公司正在致力於在SharePoint中查看PDF和其他文檔的項目(Vizit)。您仍然需要解決閱讀文件的問題,但是您不必使用PDF進行回覆,而是使用PNG格式和<img>標籤內的請求進行響應。

+0

謝謝你的回答。我會在週末檢查這個,然後更新你。計劃從現在開始檢查調試選項。 – spt3210 2010-05-28 19:13:44

+0

問題原來是腐敗PDf安裝。謝謝你的幫助。 – spt3210 2010-06-01 17:11:41

相關問題