0

我尝试将图像从 ASP.NET 图表控件保存到 pdf。我在网上找到了这个解决方案:

Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
using (MemoryStream stream = new MemoryStream())
{
    Chart1.SaveImage(stream, ChartImageFormat.Png);
    iTextSharp.text.Image chartImage = iTextSharp.text.Image.GetInstance(stream.GetBuffer());
    chartImage.ScalePercent(75f);
    pdfDoc.Add(chartImage);
    pdfDoc.Close();

    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=Chart.pdf");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Write(pdfDoc);
    Response.End();
}

但是当我运行这段代码时,什么也没有发生(不会出现在哪里保存 PDF 的问题的窗口)。

在 web.config 我有这个:

<add key="ChartImageHandler" value="storage=session;timeout=360;" />

我无法使用定义的文件路径保存文件。

请帮忙 :)

4

2 回答 2

0

尝试用以下替换您的代码 -

using (MemoryStream stream = new MemoryStream())
{
        Chart1.SaveImage(stream, ChartImageFormat.Png);
        iTextSharp.text.Image chartImage = iTextSharp.text.Image.GetInstance(stream.GetBuffer());
        chartImage.ScalePercent(75f);
        pdfDoc.Add(chartImage);
        pdfDoc.Close();

        Response.Clear();
        Response.AppendHeader("content-disposition", "attachment;filename=Chart.pdf");
        Response.ContentType = "application/pdf";
        Response.WriteFile(pdfDoc);
        Response.Flush();
        Response.End();
} 

另外,我找到pdfDoc.Close();了这条线。是否真的需要关闭它。(如果没有必要,请尝试删除它)

于 2013-09-16T13:30:17.893 回答
0

替换你的这一行

PdfWriter.GetInstance(pdfDoc, Response.OutputStream);

System.IO.MemoryStream msReport = new System.IO.MemoryStream();
iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc, msReport);

Response.Write(pdfDoc);

Response.BinaryWrite(msReport.ToArray());

希望这能解决你的问题

于 2016-06-03T09:48:39.480 回答