我一直在尝试显示我保存在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();
答案 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);