我正在使用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();
}
答案 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);
快乐的编码。 :)