如何保存Extjs4图表图像以在pdf报告中打印?

时间:2011-11-28 09:39:59

标签: extjs charts svg itextsharp report

我的extjs4应用程序控制台中有几个图表.. 我想使用这些图表的图像生成pdf报告 因为我使用iTextSharp

有没有办法从图表中获取图片,以便将它们包含在我的报告中?

我的理想是使用itextsharp

这样使用它
MyImageStream = new MemoryStream();
myChart.SaveImage(MyImageStream);

我的图表是图表对象

我在论坛里问他们告诉我我会在客户端生成并渲染我的图表(已经完成)然后我会得到svg,将它发送到服务器,服务器会用它来生成pdf ... 但我不知道如何使用svg如何将它发送到服务器

修改

我试图使用wkhtmltoimage将我的图表保存到图像

但它不起作用我指定了一个mapPath到我的.aspx

但如果我指定网站网址或localhost路径(请参阅评论中的htem)

,它可以正常工作

通过不工作我的意思是没有错误但没有创建png!

我的代码:

var url = HttpContext.Current.Server.MapPath("~/chartImage.aspx");//dosnt work
//works : // "google.com";  //"localhost/chartImage.aspx";//
        var fileName = " pie13.png ";
        var wkhtmlDir = HttpContext.Current.Server.MapPath("~/wkhtmltopdf/pdf/");//"C:\\Program Files\\wkhtmltopdf\\";
        var wkhtml = HttpContext.Current.Server.MapPath("~/wkhtmltopdf/wkhtmltoimage.exe");//"C:\\Program Files\\wkhtmltopdf\\wkhtmltopdf.exe";
        var p = new Process();

        p.StartInfo.CreateNoWindow = true;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.RedirectStandardError = true;
        p.StartInfo.RedirectStandardInput = true;
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.FileName = wkhtml;
        p.StartInfo.WorkingDirectory = wkhtmlDir;

        string switches = "";
        //switches += "--print-media-type ";
        //switches += "--margin-top 10mm --margin-bottom 10mm --margin-right 10mm --margin-left 10mm ";
        //switches += "--page-size Letter ";
        p.StartInfo.Arguments = switches + " " + url + " " + fileName;
        p.Start();

提前致谢

3 个答案:

答案 0 :(得分:2)

好的,这是在阅读上述评论后的修订版。 Ext JS是一个客户端库,因此您需要在浏览器中运行它以获取图表,这是无法更改的。如果你真的需要在服务器上获取这些图表,那么你必须采取一些或多或少的脏黑客。其中一个是:

  1. 准备一个特殊网页,其中仅包含要包含在PDF中的图表
  2. 使用wkhtmltoimage程序将其转换为图像文件(在服务器上)
  3. 使用iTextSharp
  4. 将该图像插入PDF文档

    但在这种情况下,我宁愿重新考虑工具的选择或报告的生成方式。

答案 1 :(得分:1)

使用wkhtmltopdf软件包(http://code.google.com/p/wkhtmltopdf/)将带有图表的网页转换为pdf文件,然后让用户下载该pdf文件。为此,您需要运行wkhtmltopdf服务器端(注意身份验证/用户模拟)。 由于wkhtmltopdf基于Safari,它应该可以毫无问题地使用extjs。

答案 2 :(得分:0)

我正在研究这个问题,我想你首先必须将图表转换为图片,然后使用PDF生成器库并在其上包含此图片。 要将图表转换为图片: http://dev.sencha.com/deploy/ext-4.1.0-gpl/examples/charts/Area.js

要在c#上生成PDF,如果在服务器端使用它,则可以是pdfsharp或itext