Как сохранить PDF на пути к карте сервера, используя 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 на пути к карте сервера.

Как я могу это сделать?

1 ответ

Решение

В настоящее время вы записываете документ в следующий поток вывода: Response.OutputStream

Как только вы делаете pdfDoc.Close();, PDF-байты исчезли.

Если вы хотите сохранить PDF на сервер, вам необходимо заменить следующую строку:

PdfWriter.GetInstance(pdfDoc, Response.OutputStream);

С этой строкой:

PdfWriter.GetInstance(pdfDoc, new FileStream(context.Server.MapPath("~") + "mypdf.pdf");

Теперь ваши байты не будут отправлены в браузер, но PDF будет создан на вашем сервере.

Другие вопросы по тегам