.net MVC中的Pdf查看器以显示视图中的Pdf内容

.net MVC中的Pdf查看器以显示视图中的Pdf内容,.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,pdf-viewer,.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); 如果我返回文件(流,“application/pdf”、“Authorization.pdf”),我将获得另存为对话框 我不想要这个对话框,我只想在页面内显示pdf内容 MVC中是否有pdf查看器,这样我就可以仅使

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

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

控制器中的代码为:

Stream-Stream=HtmlToPdfBuilder.GetHtmlForm(model.Type,16);
如果我返回
文件(流,“application/pdf”、“Authorization.pdf”)
,我将获得另存为对话框

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


MVC中是否有pdf查看器,这样我就可以仅使用一些控件在视图中显示内容了?pdf文件的显示方式取决于用户的浏览器。我认为你的问题没有真正的“解决方案”


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

这可能不是您想要的,但可能满足您的需要。您可以将PDF嵌入部分视图,然后使用表单提交按钮上的PDF通过ajax更新部分视图

示例代码: 局部视图

    @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>    
主要观点:

@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>
}
@使用(Ajax.BeginForm(“RenderPDF”,“Home”,新的AjaxOptions{UpdateTargetId=“pdf”}))
{
填写以下表格:
一些表格垃圾可以放在这里

@{ RenderPartial(“RenderPDF”,Model); } }

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

。因此,您正在将现有html页面转换为pdf,然后希望在网页浏览器中显示该页面?@Seph:是的,这正是我的要求,我对MVC不太熟悉,但如果它具有mime类型,并且有一个注册为mime类型的查看器,则应加载该浏览器。如果你可以将其保留为HTML,那肯定会更容易。mime类型是“应用程序/八位字节流”,我需要将此流传递给查看,但是否有可用的pdf查看器?这就是问题所在。Mime类型的应用程序/八位字节流始终保存为文件。你需要mime类型为application/pdf。谢谢你的评论。将从这里开始,并在进行一些研发后发布工作代码。我的假设是,提交表单后,你只会在屏幕上的另一个div中显示pdf,并保持表单可用。。。可能不是你想要的,但我在我的应用程序中经常使用它,因为我希望用户在实际创建pdf之前或任何时候都能看到它的预览。@restlig:RenderPdf是什么?这是Home controller中的一个操作吗?很抱歉,错过了该代码。这是部分代码。编辑了上面的代码以包括this.Hi。你用什么型号的?我不想添加混淆,也不想在父视图模型中添加字段。我希望你对此有个想法?
@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>
}