利用xml实现通用web报表打印(实现篇)(doc37)-其它制度表格(编辑修改稿)内容摘要:

第 12 页 共 37 页 此资料 来自 } } } Table类将 table标签内部的解析和打印独立出来,全部在类的内部完成,这样,我们在对顶层标签解析的时候只要是碰到 table标签就直接交给 Table类去完成,不需要再关心其实现细节。 再添加一个 Text类,代码如下: using System。 using。 using。 namespace RemotePrint { public class Text : PrintElement { private XmlNode text = null。 public Text(XmlNode Text) { text = Text。 } 第 13 页 共 37 页 此资料 来自 public override bool Draw(Graphics g) { Font font = new Font([fontname].InnerText, ([fontsize].InnerText))。 Brush brush = new SolidBrush(( [fontcolor].InnerText))。 (, font, brush, ([x].InnerText), ([y].InnerText))。 return false。 } } } 同 Table类一样, Text类完成对 text标签的解析和打印,不过因为 text的简单性,它的代码也少了很多。 它们两者同样继承自 PrintElement,都重载了 Draw方法的实现。 最后,我们还需要一个解析器用来解析顶层的标签和生成相应的对象,它在此模式中的作用就是一个 工厂类 ,负责生产出用户需要的 产品。 代码如下: using System。 using。 第 14 页 共 37 页 此资料 来自 namespace RemotePrint { public class Parser { public Parser() { } public static PrintElement CreateElement(XmlNode element) { PrintElement printElement = null。 switch() { case text: printElement = new Text(element)。 break。 case table: printElement = new Table(element)。 break。 第 15 页 共 37 页 此资料 来自 default: printElement = new PrintElement()。 break。 } return printElement。 } } } 好了,核心的解析和标签的具体打印方法已经完成了,现在我们回到 PrintControl中编写一些代码来测试我们的成果。 首先,需要引用两个要用到的名称空间: using。 using。 然后,在打印之前,需要根据 XML文件中的 pagesetting标签来设置一下打印机的页面,所以我们先写一个方法来设置打印机。 在 PrintControl类中增加一个私有的方法: private void SettingPrinter(XmlNode ps) { //打印方向(纵 /横) = (ps[landscape].InnerText)。 第 16 页 共 37 页 此资料 来自 //设置纸张类型 string papername = ps[paperkind].InnerText。 bool fitpaper = false。 //获取打印机支持的所有纸张类型 foreach(PaperSize size in ) { if(papername == )//看该打印机是否有我们需要的纸张类型 { = size。 fitpaper = true。 } } if(!fitpaper) { //假如没有我们需要的标准类型 ,则使用自定义的尺寸 = new PaperSize(Custom, (ps[paperwidth].InnerText), (ps[paperheight].InnerText))。 第 17 页 共 37 页 此资料 来自 } } 接下来,我们类中添加一个 XmlDocument的对象和一个静态变量计算页码: private XmlDocument doc = new XmlDocument()。 public static int Pages = 1。 然后再控件的 Load事件中为该对象加载 XML报表数据,代码如下: private void PrintControl_Load(object sender, e) { try { //装载报表 XML数据 = 正在加载报表数据,请稍侯 ...。 ( = 报表数据加载完毕。 = = = true。 } catch(Exception ex) { 第 18 页 共 37 页。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。