我的 extjs4application 仪表板中有几个图表。
我想使用这些图表的图像生成 pdf 报告
为此我使用 iTextSharp
有没有办法从图表中获取图像,以便将它们包含在我的报告中?
对我来说理想的是像这样与 itextsharp 一起使用它
MyImageStream = new MemoryStream();
myChart.SaveImage(MyImageStream);
我的图表将是图表对象
我在论坛上询问,他们告诉我我会在客户端生成并渲染我的图表(已经完成),然后我会获取 svg,将其发送到服务器,服务器将使用它来生成 pdf...
但我不知道如何使用 svg 也不知道如何将其发送到服务器
EDIT
我正在尝试使用 wkhtmltoimage 将我的图表保存到图像中
但当我指定 .aspx 的 mapPath 时它不起作用
但如果我指定网站 url 或本地主机路径,它就可以正常工作(请参阅评论中的 htem)
我所说的“不起作用”是指没有错误,但没有创建PNG!
my code:
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();
提前致谢
好的,这是阅读您上面的评论后的修订版本。
Ext JS 是一个客户端库,因此您需要在浏览器中运行它才能获取图表,并且这是无法更改的。如果您确实需要在服务器上获取这些图表,那么您必须诉诸一些或多或少的肮脏黑客手段。其中之一是:
- 准备一个特殊的网页,其中仅包含要包含在 PDF 中的图表
- 使用wkhtmltoimage程序将其转换为图像文件(在服务器上)
- 使用 iTextSharp 将该图像插入 PDF 文档
但在这种情况下,我宁愿重新考虑工具的选择或报告的生成方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)