2012-11-04 54 views
1

我正在嘗試在mvc應用程序中執行pdf查看器功能。當用戶點擊「閱讀PD​​F」鏈接時,它應該打開一個新的標籤/窗口,用戶應該能夠查看PDF文件。所以我查了一些例子,但是找不到。你能給我提供任何文章或例子嗎?如何在操作方法的瀏覽器選項卡中顯示pdf文件

+1

[在ASP.net免費的PDF查看器(http://stackoverflow.com/q/2439155/551322) – nrodic

回答

4

顯示在你的第一個視圖中的錨標記,並通過一個ID(識別顯示什麼PDF)

@Html.ActionLink("read the pdf","view","doc",new { @id=123},null) 

現在在doc控制器,具有其中有一個參數叫做id並返回一個動作方法pdf使用File方法。

public ActionResult View(int id) 
{ 
    byte[] byteArrayOfFile=GetFieInByteArrayFormatFromId(id); 
    return File(byteArrayOfFile,"application/pdf"); 
} 

假設GetFileInByteArrayFormatFromId是返回PDF文件的字節數組格式的方法。

如果您知道物理存儲的PDF文件的完整路徑,則可以使用此overload返回PDF。

public ActionResult Show() 
{ 
    string path="FullPAthTosomePDFfile.pdf"; 
    return File(path, "application/pdf","someFriendlyName.pdf"); 
} 

顯示在瀏覽器中的PDF而無需下載

基於最終用戶的瀏覽器設置,上述方案要麼詢問用戶是否他/她希望下載或打開文件或者直接下載/打開文件。如果您希望直接在瀏覽器中顯示文件內容而不將其下載到用戶的計算機,則可以將文件流發送到瀏覽器。

public ActionResult Show(int id) 
{ 
    // to do : Using the id passed in,build the path to your pdf file 

    var pathToTheFile=Server.MapPath("~/Content/Downloads/sampleFile.pdf"); 
    var fileStream = new FileStream(pathToTheFile, 
             FileMode.Open, 
             FileAccess.Read 
            ); 
    return new FileStreamResult(fileStream, "application/pdf");   
} 

上面的代碼期望你有~/Content/Downloads/位置的名爲sampleFile.pdf的PDF文件。如果您使用不同的名稱/命名約定存儲文件,則可以更新代碼,以便通過傳入的Id構建唯一的文件名/路徑。

+1

+1非常完整 – Askolein

相關問題