Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从内存流中读取存储的PDF_C#_.net_Pdf_Memorystream - Fatal编程技术网

C# 从内存流中读取存储的PDF

C# 从内存流中读取存储的PDF,c#,.net,pdf,memorystream,C#,.net,Pdf,Memorystream,我正在使用C#和SQLServer2012进行一个数据库项目。在我的一个表单中,我有一个PDF文件,其中包含一些存储在表中的其他信息。这是成功的,但当我想要检索存储的信息时,我在显示PDF文件时遇到了问题,因为我无法显示它,也不知道如何显示它 我读到一些文章说它不能用AdobePDF查看器从内存流显示,有什么办法吗 这是我从数据库检索数据的代码: sql_com.CommandText = "select * from incoming_boks_tbl where [i

我正在使用C#和SQLServer2012进行一个数据库项目。在我的一个表单中,我有一个PDF文件,其中包含一些存储在表中的其他信息。这是成功的,但当我想要检索存储的信息时,我在显示PDF文件时遇到了问题,因为我无法显示它,也不知道如何显示它

我读到一些文章说它不能用AdobePDF查看器从内存流显示,有什么办法吗

这是我从数据库检索数据的代码:

            sql_com.CommandText = "select * from incoming_boks_tbl where [incoming_bok_id]=@incoming_id and [incoming_date]=@incoming_date";
            sql_com.Parameters.AddWithValue("incoming_id",up_inco_num_txt.Text);
            sql_com.Parameters.AddWithValue("incoming_date", up_inco_date_txt.Text);
            sql_dr = sql_com.ExecuteReader();
            if(sql_dr.HasRows)
            {
                while(sql_dr.Read())
                {
                    up_incoming_id_txt.Text = sql_dr[0].ToString();
                    up_inco_num_txt.Text = sql_dr[1].ToString();
                    up_inco_date_txt.Text = sql_dr[2].ToString();
                    up_inco_reg_txt.Text = sql_dr[3].ToString();
                    up_inco_place_txt.Text = sql_dr[4].ToString();
                    up_in_out_txt.Text = sql_dr[5].ToString();
                    up_subj_txt.Text = sql_dr[6].ToString();
                    up_note_txt.Text = sql_dr[7].ToString();
                    string file_ext = sql_dr[8].ToString();//pdf file extension
                    byte[] inco_file = (byte[])(sql_dr[9]);//the pdf file
                    MemoryStream ms = new MemoryStream(inco_file);
                    //here I don't know what to do with memory stream file data and where to store it. How can i display it?
                }
            }

这个答案应该给你一些选择:


过去我使用过谷歌的开源PDF渲染项目-

有一个名为C#nuget的包,它在PDFium周围提供了一个C#包装器,并允许显示和打印pdf

它直接与流一起工作,因此不需要将任何数据写入磁盘

这是我在WinForms应用程序中的示例

    public void LoadPdf(byte[] pdfBytes)
    {
        var stream = new MemoryStream(pdfBytes);
        LoadPdf(stream)
    }

    public void LoadPdf(Stream stream)
    {
        // Create PDF Document
        var pdfDocument = PdfDocument.Load(stream);

        // Load PDF Document into WinForms Control
        pdfRenderer.Load(_pdfDocument);
    }

假设WinForms与web相反:和。编辑:当然,把我对一个琐碎问题的琐碎回答转换成评论。我不会复制现有的答案。谢谢你的好答案,但你能给我一篇文章如何将此软件包添加到visual studio 2010中,它可以像添加参考一样添加吗?@honar.cs PDFium作为。Nuget软件包管理器可以安装到VS2010中。亲爱的朋友:谢谢,我想我是按照你说的做的,请看这个链接中的图片,你安装了这两个东西吗?如果是,现在我如何使用找到它的PDFium?。再次感谢您,我想在表单的特定位置显示pdf查看器,因为它有一些其他组件?如何做到这一点?@honar.cs您最好分别搜索和询问这些问题。评论部分不是进行深入讨论的地方。谢谢