.net MVC中的Pdf查看器以显示视图中的Pdf内容
我有一个名为ShowDocument.cshtml的视图 我想在视图中显示pdf文档。 首先,我将html页面转换为.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查看器,这样我就可以仅使
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>
}