1

プログラミングは初めてです。MVCからPDFを印刷しようとしていますが、アクションリンクを使用するとうまく機能します。コードは次のとおりです。

  <%= Html.ActionLink("Print","GeneratePdf","Home", new { fc="Test" },null) %>

   public ActionResult GeneratePdf(string fc)
        {
            Document document = new Document();
            MemoryStream workStream = new MemoryStream();
            PdfWriter.GetInstance(document, workStream);
            document.Open();
            document.Add(new iTextSharp.text.Paragraph("\n\n"));
            // need to add the user name
            iTextSharp.text.Paragraph p = new iTextSharp.text.Paragraph("Name: " + fc);
            p.Alignment = 1;
            document.Add(p);

            document.Close();
            byte[] byteInfo = workStream.ToArray();
            SendPdfToBrowser(byteInfo);
            return null;
        }

   public void SendPdfToBrowser(byte[] buf)
        {
            string filename = "Certificate.pdf";

            // Prepare the headers.
            Response.ClearContent();
            Response.ClearHeaders();
            Response.ContentType = "application/pdf";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);

            // Write the PDF data.
            Response.BinaryWrite(buf);

            // Flush the buffer to the browser.
            Response.End();
            Response.Flush();
            Response.Clear();
        }

Jsonを使用する必要があります。コードは次のとおりです。

function PrintChart(fc) {

                 var fc = "Test";
                 var url = '<%= Url.Content("~/Home/GeneratePdf") %>';
                 $.post(url, { fc: fc },
            function (content) {
                if (content != null) { 5 }
            }, "json");

 <input type="button" onclick="PrintChart();" value="Print" />

エラーは発生しませんが、PDFファイルは生成されません。前もって感謝します。

4

1 に答える 1

0

Ajaxを使用してファイルをダウンロードすることはできません。jQuery $ .post()は、サーバーからの応答がテキストであることを期待します。Ajaxの方法でファイルをダウンロードするには、一般的なアプローチは、非表示のiframeを使用し、iframeのsrcをファイルのURLに設定することです。

<iframe id="hiddenFrame" src="" style="display:none; visibility:hidden;"></iframe>

PrintChart()で、データを含むURLをクエリ文字列として作成し、iframeのsrcを設定します。

 function PrintChart(fc) {

    var fc = "Test";
    var url = '<%= Url.Content("~/Home/GeneratePdf") %>';
    url += "?fc="+fc;

    $('#hiddenFrame').attr('src', url);
}
于 2012-04-07T09:43:57.850 に答える