如何使用Web浏览器控件从流中显示PDF文档

时间:2016-05-29 19:16:55

标签: winforms pdf webbrowser-control

我一直在尝试显示我保存在SQL数据库中的PDF文档并预览它而不必保存它。 我想使用Web浏览器控件从流中显示PDF。有人推荐使用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();

我在表格中命名了包含带文档的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();

1 个答案:

答案 0 :(得分:0)

我选择了一个名为Apitron的不同PDFviewer,它不是openSource,但它解决了我的问题。

我首先为APITRON.RESTERISER添加了PDFViewer组件,它适合我的.NET Framework。

就这么简单。

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);