2012-12-05 164 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文件。