我想将Div内容转换为pdf并将创建的pdf文件保存在服务器路径上,而不要求我保存文件(下载文件)。
我转换了pdf文件,并将该文件保存在服务器路径中。
但在我的代码中,它还显示了我想删除的文件下载选项。
我不想将pdf文件保存为选项,因为我在服务器路径中保存了已创建的文件。
以下是我的代码:
string appPath = HttpContext.Current.Request.ApplicationPath;
string path = Server.MapPath(appPath + "/Attachment/Test.pdf");
if (File.Exists(path))
File.Delete(path);
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=Panel.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
createDiv.RenderControl(hw);
var output = new FileStream(path, FileMode.Create);
StringReader sr = new StringReader(sw.ToString());
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(PageSize.A4, 10f, 10f, 100f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc, output);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.End();
谢谢, 亚太区首席技术官Matt
答案 0 :(得分:0)
显示保存对话框的原因是您正在写入响应。如果您只想保存到本地磁盘,只需删除对响应的所有引用。然后,您可以执行Response.Redirect(...)
或类似操作,将用户指向下一页。
使用MemoryStream
如果您打算将PDF写入数据库,则应使用MemoryStream
(see MSDN)而不是FileStream
。然后,您可以调用MemoryStream.ToArray()
方法,该方法将返回可以存储在数据库中的字节数组。
假设您正在使用实体框架:
var output = new MemoryStream();
//snip
iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc, output);
//snip
myEntityFrameworkObject.Data = output.ToArray();
DataContext.SaveChanges();