从内存流中读取存储的PDF

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

我读过一些文章说它无法用内存流中的Adobe PDF查看器显示,有什么办法吗?

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

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

这个答案应该给你一些选择: 如何使用C#渲染pdf


在过去,我使用过谷歌开源PDF渲染项目–PDFium

有一个名为PdfiumViewer的C#nuget包,它提供了一个围绕PDFium的C#包装器,允许显示和打印PDF。

它直接与Streams一起使用,因此不需要将任何数据写入磁盘

这是我在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); }