6

ShowDocument.cshtmlというビューがあります。

PDFドキュメントをビューで表示したい。まず、htmlページを次のような情報を含む.pdfに変換します。

コントローラのコードは次のとおりです。

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

戻り値File(stream, "application/pdf", "Authorization.pdf")を指定すると、[保存]、[名前を付けて保存]ダイアログボックスが表示されます。

このダイアログボックスは必要ありません。ページ内のPDFコンテンツのみを表示したいです。

それで、MVCにPDFビューアがあり、コントロールを使用してのみビューにコンテンツを表示できるようになっていますか?

4

2 に答える 2

12

これはまさにあなたが望むものではないかもしれませんが、あなたのニーズを満たすかもしれません. 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>    

コントローラー呼び出し:

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

(編集:「メインビュー」をタイトル風に変更)

于 2012-12-05T16:12:45.177 に答える
1

PDF ファイルの表示方法は、ユーザーのブラウザによって異なります。あなたの問題に対する本当の「解決策」があるとは思いません。

この問題が発生したとき、GhostScript ライブラリを使用して PDF ファイルをサーバー上の複数の PNG 画像にレンダリングし、ビューで PNG ファイルを参照しました。

于 2012-12-05T10:54:28.953 に答える