Просмотр 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 в моем представлении.

Другие вопросы по тегам