Просмотр PDF в MVC, чтобы показать содержимое PDF в View
У меня есть представление под названием ShowDocument.cshtml.
Я хочу показать документ PDF в представлении. Сначала я преобразовываю HTML-страницу в формат.pdf, который содержит информацию в виде:
Код в контроллере:
Stream stream = HtmlToPdfBuilder.GetHtmlForm(model.Type, 16);
Если я верну File(stream, "application/pdf", "Authorization.pdf")
Я буду получать как сохранить, сохранить как диалоговое окно.
Я не хочу, чтобы это диалоговое окно, я хочу показать содержимое PDF только на странице.
Так есть ли в MVC просмотрщик PDF, чтобы я мог показывать содержимое в представлении только с помощью какого-либо элемента управления?
2 ответа
Это может быть не совсем то, что вы хотите, но может удовлетворить ваши потребности. Вы можете встроить 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>
}
(Редактировать: изменен "основной вид" на заголовок)
Как отображается файл PDF, зависит от браузера пользователя. Я не думаю, что есть реальное "решение" вашей проблемы.
Когда у меня возникла эта проблема, я рендерил файл PDF в несколько изображений PNG на сервере, используя библиотеку GhostScript, а затем ссылался на файлы PNG в моем представлении.