2012-12-05 161 views
2

我有一個名爲ShowDocument.cshtml的視圖。在MVC的PDF查看器在查看中顯示pdf內容

我想在視圖中顯示PDF文檔。 首先我將HTML頁面爲.pdf其中包含的信息爲:

控制器中的代碼是:

Stream stream = HtmlToPdfBuilder.GetHtmlForm(model.Type, 16); 

如果我給回File(stream, "application/pdf", "Authorization.pdf"),我會越來越爲保存,另存爲對話框。

我不想要這個對話框,我只想顯示頁面內的pdf內容。

那麼,有沒有在任何MVC PDF閱讀器,這樣我只能用一些控制

+0

..所以你現有的HTML頁面轉換成PDF格式,然後你想顯示在網頁中瀏覽器嗎? – Seph

+0

@ Seph:是的,這就是我的要求 – user1400915

+0

我不熟悉MVC,但如果它有一個MIME類型,並且有一個爲mime類型註冊的查看器,它應該加載。如果你可以把它作爲HTML,它肯定會更容易。 – Paparazzi

回答

7

這可能不是你想要的,但可能會滿足你的需要。您可以在部分視圖中嵌入PDF,然後通過ajax使用表單提交按鈕上的PDF更新局部視圖。

示例代碼: 局部視圖

@model Test.Models.ViewModel 

<style type="text/css"> 

#pdfbox 
{ 
    width:600px; 
    height:400px; 
    border: 5px solid #ccc; 
} 

</style> 

<object id='pdfbox' type="application/pdf" data="@Url.Action("GeneratePDF", "Home", Model)"> 
    Click @Html.ActionLink("here", "GeneratePDF", "Home") to view the file. 
</object>  

控制器電話:

public ActionResult GeneratePDF(ViewModel model) 
    { 

     byte[] bytes = OpenPDFAndGetBytes("Thepdfname"); 
     return File(bytes, "application/pdf"); 
    } 

    public ActionResult RenderPDF(LabelViewModel model) 
    { 
     return PartialView(model); 
    } 

main view 

@using (Ajax.BeginForm("RenderPDF", "Home", new AjaxOptions { UpdateTargetId = "pdf" })) 
{ 
    <table> 
     <tr> 
      <td> 
       <fieldset> 
        <legend>Fill the form:</legend> 
         Some form junk can go here 
        <br /> 
        <input type="submit" value="Display PDF" /> 
       </fieldset> 
      </td> 
      <td> 
       <div id='pdf'> 
        @{ 
         Html.RenderPartial("RenderPDF", Model); 
        } 
       </div> 
      </td> 
     </tr> 
    </table> 
} 
+0

感謝您的評論。將從這裏開始並在做一些研發後發佈工作代碼。 – user1400915

+0

我的假設是,在提交表單後,您只能在屏幕上的另一個div上顯示pdf,並保留表單。 。可能不是你想要的,但我在我的應用程序中使用了很多,因爲我希望用戶能夠在實際創建或之前看到PDF的預覽。 – retslig

+0

@restlig:什麼是「RenderPdf」?這是主控制器中的操作嗎? – user1400915

1

顯示PDF文件如何取決於用戶的瀏覽器顯示在視圖中的內容。我不認爲你的問題有一個真正的「解決方案」。

當我遇到這個問題時,我使用GhostScript庫將該PDF文件呈現給服務器上的多個PNG圖像,然後在我的視圖中引用了PNG文件。