我的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();
提前致谢
答案 0 :(得分:2)
好的,这是在阅读上述评论后的修订版。 Ext JS是一个客户端库,因此您需要在浏览器中运行它以获取图表,这是无法更改的。如果你真的需要在服务器上获取这些图表,那么你必须采取一些或多或少的脏黑客。其中一个是:
但在这种情况下,我宁愿重新考虑工具的选择或报告的生成方式。
答案 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