向日葵甘特图的打印思路,欢迎大家给出建议
2009-03-24 07:08
225 查看
打印问题解决方法:
利用在服务端web 快照的方式生成图片,然后用户就可以利用图片工具打印甘特图。
这样向日葵甘特图就需要一个轻量的服务端,服务端代码完全对用户开放。
下面是C#写的生成甘特截图代码,可以运行查看效果,欢迎大家给出更多建议。
目前存在问题是生成速度偏慢,而且较耗服务器性能,正在改进之中。
using System;
using System.Web;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Windows.Forms;
using System.Threading;
namespace SFGantt.Services
{
/*定义一个页面类型,用来将一个XML文件分隔输出*/
public class GanttPrint : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
try
{
Server.ScriptTimeout = 9000;
System.Threading.ThreadStart start = new ThreadStart(this.test);
System.Threading.Thread th = new System.Threading.Thread(start);
th.SetApartmentState(System.Threading.ApartmentState.STA);//这句关键的
th.Start();
th.Join();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
private void test()
{
try
{
WebBrowser MyBrowser = new WebBrowser();
MyBrowser.Size = new Size(3600, 2200);
string url = "http://www.51diaodu.cn/sfgantt/examples/SFGantt/ganttprint.htm";
MyBrowser.Navigate(url);
while (MyBrowser.IsBusy || MyBrowser.ReadyState != WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();
}
Bitmap myBitmap = new Bitmap(3600, 2200);
Rectangle DrawRect = new Rectangle(0, 0, 3600, 2200);
MyBrowser.DrawToBitmap(myBitmap, DrawRect);
string FileName ="sfgantt"+ DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
string tmpRootDir = Server.MapPath(this.Request.ApplicationPath);//获取程序根目录
//String FilePath = Server.MapPath(FileName);
myBitmap.Save(tmpRootDir + FileName);
myBitmap.Dispose();
MyBrowser.Dispose();
MyBrowser = null;
Response.Write("向日葵甘特生成图片"+ FileName );
Response.Write("<img src=\\" + FileName + " width=100% height=100%>");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
利用在服务端web 快照的方式生成图片,然后用户就可以利用图片工具打印甘特图。
这样向日葵甘特图就需要一个轻量的服务端,服务端代码完全对用户开放。
下面是C#写的生成甘特截图代码,可以运行查看效果,欢迎大家给出更多建议。
目前存在问题是生成速度偏慢,而且较耗服务器性能,正在改进之中。
using System;
using System.Web;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Windows.Forms;
using System.Threading;
namespace SFGantt.Services
{
/*定义一个页面类型,用来将一个XML文件分隔输出*/
public class GanttPrint : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
try
{
Server.ScriptTimeout = 9000;
System.Threading.ThreadStart start = new ThreadStart(this.test);
System.Threading.Thread th = new System.Threading.Thread(start);
th.SetApartmentState(System.Threading.ApartmentState.STA);//这句关键的
th.Start();
th.Join();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
private void test()
{
try
{
WebBrowser MyBrowser = new WebBrowser();
MyBrowser.Size = new Size(3600, 2200);
string url = "http://www.51diaodu.cn/sfgantt/examples/SFGantt/ganttprint.htm";
MyBrowser.Navigate(url);
while (MyBrowser.IsBusy || MyBrowser.ReadyState != WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();
}
Bitmap myBitmap = new Bitmap(3600, 2200);
Rectangle DrawRect = new Rectangle(0, 0, 3600, 2200);
MyBrowser.DrawToBitmap(myBitmap, DrawRect);
string FileName ="sfgantt"+ DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
string tmpRootDir = Server.MapPath(this.Request.ApplicationPath);//获取程序根目录
//String FilePath = Server.MapPath(FileName);
myBitmap.Save(tmpRootDir + FileName);
myBitmap.Dispose();
MyBrowser.Dispose();
MyBrowser = null;
Response.Write("向日葵甘特生成图片"+ FileName );
Response.Write("<img src=\\" + FileName + " width=100% height=100%>");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
相关文章推荐
- 大家看看这个随机发牌的小程序,给出点建议,或者挑出点瑕疵,一起来讨论一下
- 关于最大加权集求解问题的思路(欢迎大家纠正)
- 欢迎大家试用自动化学科数字化知识服务网络平台,并给我们提出宝贵的意见和建议
- 给出百度首页,写出测试用例(我自己写的,欢迎大家参与更新)
- IOS地图定位——IOS8/IOS9新特性(未完待续,欢迎给出建议、错误随时更新)
- 欢迎大家在这里对CSDN博客投诉或者提出好的建议
- 欢迎大家访问,参与讨论,并提出批评、建议、修改
- 一副牌局的破解(欢迎大家来提供思路)
- 附2007春季课表!欢迎大家对我的课程提问题!谢谢大家的建议批评和鼓励!!!我会努力去做得更好,希望你们学得更好!!!
- 欢迎大家给予宝贵意见与建议!
- 我的个人博客上线,欢迎大家光临,指导建议
- 【自然框架】——思路、结构、特点的介绍(初稿,欢迎大家多提意见)
- iOS 控件之UITextField及键盘挡住处理方法(欢迎大家提建议和分享)
- 重新启用原来的百度空间,欢迎大家多多留言啊,有什么建议和意见尽管提,这个空间就做为技术文章收集地了以后
- 【自然框架】——思路、结构、特点的介绍(初稿,欢迎大家多提意见)
- 欢迎大家对csdn的blog提出您的宝贵建议
- 大家对深圳俱乐部活动有什么好的建议,欢迎跟进评论
- 收集关于录音录成mp3的思路,欢迎参考和建议
- 公司给出的选择,我该怎么做??请大家帮忙提提建议!!
- 大家都来看看这个随机发牌的小程序代码。给出一点改进的建议,或者能找出点瑕疵,,呵呵