MS-диаграмма в отчетах о кристаллах - PullRequest
0 голосов
/ 16 июля 2011

Возможно ли включить изображение диаграммы элемента управления ms chart asp.net в отчеты о кристаллах, выполненные в разрешении, пригодном для печати?

Мой веб-сайт отображает mschart, и я хочу эту же диаграмму в моем отчете Crystal, чтобы клиент мог ее распечатать Я не хочу использовать таблицу отчетов о кристаллах.

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Я делаю что-то похожее - создаю диаграмму с диаграммой ms, отображаю ее на веб-странице вместе с другой HTML-разметкой (таблицами данных), а затем пользователь может экспортировать ее в PDF или Excel. Чтобы сделать это и сохранить то же изображение диаграммы, мой код сохраняет диаграмму на сервере как изображение .png, а затем, если пользователь хочет экспортировать страницу, мой код вызывает это изображение в документе экспорта (в формате PDF или Excel). ) и отображение его с тегом.

Это соответствующий код, который сохраняет диаграмму на сервере:

// save the finished image to a folder, so the PDF can retrive it later
v_chart.SaveImage(context.Server.MapPath(String.Concat(@"charts\chartimage_",      v_runtimeReportKey, "_", v_chartID, ".png")));
// output the finished image to the browser
context.Response.Clear();
context.Response.ContentType = "image/png";
// following works fine with IIS 7 (Windows 7, or 2008 Server)
//v_chart.SaveImage(context.Response.OutputStream, ChartImageFormat.Png);
// must use the following for IIS 6 (Windows 2003 Server)
using(MemoryStream v_stream = new MemoryStream()){
   v_chart.SaveImage(v_stream, ChartImageFormat.Png);
   v_stream.WriteTo(context.Response.OutputStream);
}
1 голос
/ 18 августа 2011

Когда вы сохраняете MS-диаграмму как изображение, она всегда получается с разрешением 96 точек на дюйм, что не очень хорошо, если вы хотите напечатать ее - должно быть больше 300 dpi.

Простой обходной путь - временно увеличить размер диаграммы перед вызовом SaveImage().

var originalWidth = myChart.Width;
var originalHeight = myChart.Height;
myChart.Width *= 3;
myChart.Height *= 3;

myChart.SaveImage("path\to\imageFile", ChartImageFormat.Bmp);

myChart.Width = originalWidth;
myChart.Height = originalHeight;

В результате изображение будет в 3 раза больше оригинала. При уменьшении до 1/3 его размера он будет иметь 96 x 3 = 288 точек на дюйм, что выглядит намного лучше при печати. ​​

...