如何使用 iTextsharp 在服务器映射路径上保存 pdf
how to save pdf on server map path using iTextsharp
我正在使用以下代码生成 pdf,它工作完美:
string strQuery = "select * from userdata";
SqlCommand cmd = new SqlCommand(strQuery);
DataTable dt = GetData(cmd);
//Create a dummy GridView
GridView GridView1 = new GridView();
GridView1.AllowPaging = false;
GridView1.DataSource = dt;
GridView1.DataBind();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.RenderControl(hw);
StringReader sr = new StringReader(sw.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(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();
效果很好。但我可以将此 pdf 保存到服务器地图路径上。
我在下面写了 pdfDoc.Close();
String path = Server.MapPath("~/mypdf.pdf");
但它没有将 pdf 保存到服务器映射路径。
我该怎么做?
您当前正在将文档写入以下输出流:Response.OutputStream
一旦你这样做 pdfDoc.Close();
,PDF 字节就消失了。
如果要将PDF保存到服务器,则需要替换下面一行:
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
这一行:
PdfWriter.GetInstance(pdfDoc, new FileStream(context.Server.MapPath("~") + "mypdf.pdf");
现在您的字节不会发送到浏览器,但 PDF 将在您的服务器上创建。
我正在使用以下代码生成 pdf,它工作完美:
string strQuery = "select * from userdata";
SqlCommand cmd = new SqlCommand(strQuery);
DataTable dt = GetData(cmd);
//Create a dummy GridView
GridView GridView1 = new GridView();
GridView1.AllowPaging = false;
GridView1.DataSource = dt;
GridView1.DataBind();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.RenderControl(hw);
StringReader sr = new StringReader(sw.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(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();
效果很好。但我可以将此 pdf 保存到服务器地图路径上。
我在下面写了 pdfDoc.Close();
String path = Server.MapPath("~/mypdf.pdf");
但它没有将 pdf 保存到服务器映射路径。
我该怎么做?
您当前正在将文档写入以下输出流:Response.OutputStream
一旦你这样做 pdfDoc.Close();
,PDF 字节就消失了。
如果要将PDF保存到服务器,则需要替换下面一行:
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
这一行:
PdfWriter.GetInstance(pdfDoc, new FileStream(context.Server.MapPath("~") + "mypdf.pdf");
现在您的字节不会发送到浏览器,但 PDF 将在您的服务器上创建。