Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何保存Extjs4图表图像以在pdf报告中打印?_Extjs_Charts_Svg_Itextsharp_Report - Fatal编程技术网

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

如何保存Extjs4图表图像以在pdf报告中打印?,extjs,charts,svg,itextsharp,report,Extjs,Charts,Svg,Itextsharp,Report,我的extjs4application仪表板中有几个图表。。 我想使用这些图表的图像生成一份pdf报告 为此,我使用iTextSharp 是否有办法从图表中获取图像,以便将其包含在我的报告中? 对我来说,理想的做法是像这样使用itextsharp MyImageStream = new MemoryStream(); myChart.SaveImage(MyImageStream); 我的图表将是图表对象 我在论坛上四处询问,他们告诉我,我将在客户端生成并呈现我的图表(已经完成),然后我将获取

我的extjs4application仪表板中有几个图表。。 我想使用这些图表的图像生成一份pdf报告 为此,我使用iTextSharp

是否有办法从图表中获取图像,以便将其包含在我的报告中?

对我来说,理想的做法是像这样使用itextsharp

MyImageStream = new MemoryStream();
myChart.SaveImage(MyImageStream);
我的图表将是图表对象

我在论坛上四处询问,他们告诉我,我将在客户端生成并呈现我的图表(已经完成),然后我将获取svg,将其发送到服务器,服务器将使用它生成pdf。。。 但我不知道如何使用svg,也不知道如何将其发送到服务器

编辑

我正在尝试使用wkhtmltoimage将我的图表保存到图像中

但是如果我指定一个指向.aspx的映射路径,它就不起作用了

但如果我指定一个网站url或本地主机路径(请参见注释中的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();
提前感谢

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

好的,在阅读了上面的评论之后,这里有一个修订版。 ExtJS是一个客户端库,因此您需要在浏览器中运行它来获取图表,而这是无法更改的。如果你真的需要在服务器上获得这些图表,那么你必须或多或少地求助于一些肮脏的黑客。其中之一是:

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

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

    我正在研究这一点,我认为您首先必须将图表转换为图片,然后使用PDF生成器库并将此图片包含在其中。 要将图表转换为图片,请执行以下操作:


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

    我已经使用了iTextSharp,并已将我的报告全部完成,请删除图表,因此我不想更改它。我正在尝试用c#中的wkhtmltoimage转换为图像,但仍然不起作用..一个u告诉我如何做plz..或者一些使用c#的文档。谢谢。创建包含图形2的网页。使用wkhtmltoimage命令行将该页面转换为图像文件3。只有当你有1个和2个正在工作时,你才能做同样的事情,但是从C#程序(调用wkhtmltoimage命令行)如果仍然不工作,那么请阅读奇怪的手册,如果你需要更多的帮助,那么指定哪些不适合你。