簡體   English   中英

如何使用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將在您的服務器上創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM