代码之家  ›  专栏  ›  技术社区  ›  Simon Price

ASP.NET MVC 5在浏览器中从字节[]C呈现PDF#

  •  0
  • Simon Price  · 技术社区  · 6 年前

    我正在与Kendo MVC合作,我想将上载的PDF呈现到Tabstrip中。

    当获取要在选项卡中显示的PDF文件时,我将调用我的控制器和后续服务,以字节数组的形式获取文件数据,并使用以下代码将数据返回到其各自的DIV中。

    public FileStreamResult GetRxPdf(int prescriptionId)
    {
        var retVal = _service.GetRxPdf(prescriptionId);
        byte[] byteArray = retVal.FileData;
        MemoryStream pdfStream = new MemoryStream();
        pdfStream.Write(byteArray, 0, byteArray.Length);
        pdfStream.Position = 0;
        return new FileStreamResult(pdfStream, retVal.ContentType);
    }
    

    呈现的输出不是PDF,但如下所示

    %PDF-1.7%\239;\239;\\\239;\\239;\\239;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.32 841.92]/目录4 0 R/结构父级0>>endobj 4 0 obj <> stream x��]Ys�F~W��ɔ5�\�I�֒��[9[�yH�@S�̲�����7���=Ip��P�TE��3������1�>[,��&�e��7�ϖ�����_?½_?½_?½_?½_?½_?½_?½_??\\239;\239;\239;\239;\\239;\\\\\\239;\\\239;\\239;\\\\\\\\239;\\\\\\\\美元?.I8+jAIÊ����ׯ��㣳��ӗ������|w|��eA�H�D����uqy3�����F������G/`�/�G��m�����4r�g����m�* ��/s^%�HQ�R�]䛋����]��h1S>�W������R^�0>���՘�Q1(�'l�zL���z>棇��pm0����=�±7�;�� ?_?_?_?_?_?_?_??_?_?_?_?_?_?_?_?_?_?_?A+_?_?xd%_?_?_?_?_?_?_?_?_?_?? _?_?½$MD_?½~ _?½A2V6_?½_?½_?½Q…。此处有更多文件数据… 0000166807 00000n拖车<]gt;>开始xref 166853%%eof

    当数据通过Ajax调用返回时,它就是这样传递给DIV的。

     $("#divRxPdf").html(data);
    

    如果有人能帮助我,并在分区中相应地显示PDF,我将不胜感激。

    2 回复  |  直到 6 年前
        1
  •  1
  •   karthickj25    6 年前

    更新:

    PDF需要嵌入到HTML中 <embed> <iframe> . 您还可以使用库,例如 pdf.js 使用某些控件呈现PDF文件。

    pdf.js自述文件包含示例以及如何: https://github.com/mozilla/pdf.js


    通过使用 retun File() 方法

    public ActionResult GetRxPdf(int prescriptionId)
     {
        var retVal = _service.GetRxPdf(prescriptionId);
        byte[] byteArray = retVal.FileData;      
       return File(byteArray , "application/pdf" , "Filename.pdf");
    }
    
        2
  •  0
  •   Baskar John    6 年前

    您可以使用对象标记来实现它。

    $obj = $('<object>'); 
    $obj.attr("data","Url to PDF");
    $obj.attr("type","application/pdf");
    
    $("#pdfdiv_content").append($obj);
    

    有关更多详细信息,请参阅 this link