MVC中的Pdf Viewer在View中显示pdf内容

时间:2012-12-05 10:51:05

标签: .net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 pdf-viewer

我有一个名为ShowDocument.cshtml的视图。

我想在视图中显示pdf文档。 首先,我将html页面转换为.pdf,其中包含以下信息:

控制器中的代码是:

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

如果我返回File(stream, "application/pdf", "Authorization.pdf"),我将保存,保存为对话框。

我不想要这个对话框,我只想在页面内显示pdf内容。

那么MVC中是否有任何pdf查看器,以便我只能使用某些控件在视图中显示内容

2 个答案:

答案 0 :(得分:11)

这可能不是您想要的,但可能符合您的需求。您可以在部分视图中嵌入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);
    }

主要观点:

@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>
}

(编辑:将“主视图”更改为标题ish)

答案 1 :(得分:1)

PDF文件的显示方式取决于用户的浏览器。我不认为你的问题有一个真正的“解决方案”。

当我遇到此问题时,我使用GhostScript库将PDF文件渲染到服务器上的多个PNG图像,然后在我的视图中引用了PNG文件。