2016-05-29 88 views
0

我一直在嘗試顯示保存在我的SQL數據庫中的PDF文檔,並且無需保存即可預覽它。 我想使用網絡瀏覽器控件來顯示來自流的PDF。有人推薦PDFium,但我不知道如何使用,所以我堅持這一個。希望有人能幫我搞定它如何使用網絡瀏覽器控件從流中顯示PDF文檔

using (SqlConnection con = new SqlConnection("Data Source = bh_imu\\sqlexpress; Initial Catalog = bh; Integrated Security = True")) 
      { 
       dt.Clear(); 
       con.Open(); 
       cmd.Connection = con; 
       cmd.CommandText = "select * from documents where docname like '%" + listBox1.SelectedItem + "%' "; 
       da.SelectCommand = cmd; 
       da.Fill(dt); 

      foreach (DataRow r in dt.Rows) 
      { 
       labelDname.Text = r["designername"].ToString(); 
       labelUnitName.Text = r["unit"].ToString(); 
       labelTeam.Text = r["team"].ToString(); 
       labelSite.Text = r["sites"].ToString(); 
       //labeldocType.Text = r["doctype"].ToString(); 
       labelDocname.Text = r["docname"].ToString(); 

我在我的表中命名爲包含帶有doc的PDF的列。我用Varbinary(max)的數據類型創建它。這裏是我試圖展示它。

string fileName = Path.GetFileName(r["doc"].ToString()); 
       byte[] buff = null; 
       FileStream fs = new FileStream(fileName,FileMode.Open, FileAccess.Read); 
       BinaryReader br = new BinaryReader(fs); 
       long numBytes = new FileInfo(fileName).Length; 
       buff = br.ReadBytes((int)numBytes); 
       MemoryStream stream = new MemoryStream(buff); 
       webBrowser1.DocumentStream = stream; 
       webBrowser1.Show(); 

回答

0

我選擇了一個叫做Apitron的不同的PDFviewer,它不是openSource,但它解決了我的問題。

我首先添加了適用於我的.NET Framework的APITRON.RESTERISER的PDFViewer組件。

這很簡單。

byte[] data = null; 
data = (byte[])r["doc"]; 

MemoryStream memStream = new MemoryStream(data); 
    memStream.Write(data, 0, data.Length); //Buffer:Byte[]; Offset:Int; Count:Int. 
    memStream.Position = 0; 
    pdfViewer1.Document = new Document(memStream); 
相關問題