使用c#将生成的pdf保存在数据库中

时间:2013-12-16 17:30:29

标签: c# asp.net sql sql-server pdf

我正在使用asp.net应用程序,它以多种形式从用户那里获取输入并以pdf格式保存。现在我卡在了我不知道如何在SQL Server数据库中保存生成的pdf的地方。

有了这个,我附上了用pdf保存的代码。

protected void btnExportPDF_Click(object sender, EventArgs e)
{
   Response.ContentType = "application/pdf";
   Response.AddHeader("content-disposition", "attachment;filename=Samba.pdf");
   Response.Cache.SetCacheability(HttpCacheability.NoCache);

   StringWriter st = new StringWriter();
   HtmlTextWriter ht = new HtmlTextWriter(st);

   gvExperience.AllowPaging = false;
   gvExperience.DataBind();
   gvExperience.RenderControl(ht);

   StringReader sr1 = new StringReader(st.ToString());
   Document pdfDoc = new Document(PageSize.A4, 10f,10f,10f,0f);

   HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
   PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
   pdfDoc.Open();
   htmlparser.Parse(sr1);
   pdfDoc.Close();

   Response.Write(pdfDoc);
   Response.End();  
}

2 个答案:

答案 0 :(得分:3)

创建一个至少包含文件名称的表(varchar(100),content(varbinary(max))和内容的长度(int)。

将pdf转换为字节数组(byte [])。我会将你的Reponse.OutputStream换成内存流。使用您的首选数据访问方法保存到Sql Server。

Sql server的'varbinary'将转换为C#的'byte []'。当您将其写回客户端的浏览器时,您需要设置'content-type'标头并使用'Response.BinaryWrite(byte [])'写入流。

答案 1 :(得分:0)

转换为base64字符串,然后插入DB。

byte[] pdfBytes = File.ReadAllBytes(pdfPath);
string pdfBase64 = Convert.ToBase64String(pdfBytes);

快乐的编码。 :)