Web打印(2),打印核心架构--XML分析器及打印元素UML类图,接口及实现

Web打印(2),打印核心架构--XML分析器及打印元素UML类图,接口及实现

为了WinForm打印、Web打印调用的一致性,方便移植性,减少调用代码的修改量, 并且保证UML类图的完整性,用JavaScript定义了C#定义的接口IXmlParser。接口只有一个方法Parse(),即实现分析,并返回一个接口对象。

  1. XML分析器及打印元素UML类图  powerdesigner对象模型文件下载GoldPrinter.XmlParser.oom

  2. XML分析器在Visual Studio中类视图,用C#.Net实现,接下来,一步一步用纯JS实现

     

  3. IXmlParser分析器接口
    接口,大家知道,在.Net中有接口概念,即规定了类要实现的属性和方法等。C#是一个强类型的完全面向对象的语言,在定义变量、方法的参数时,要求指定对应的类型,在编译时会严格检查类型是否一致,不一致不能编译通过,特别是方法的参数类型,为了程序的灵活性,有一句话要记住:针对接口编程。例如我们在定义方法时,方法的参数类型,在调用时编译器要进行类型检查,看传递的参数类型是否一致,此时,我们可以指定具体的类形,签于C#的强类型特点, 但又限制了程序的灵活性,此时接口作为参数,编译器进行类型检查时,如果类形实现了接口,或类型是此类型的基类,则编译通过。
       
          下而是C#代码实现的UML类图中的IXmlParser。
    namespace GoldPrinter.XmlParser
    {
    	/// <summary>
    	/// 表示分析处理用XML节点描述特征的对象的接口。
    	/// </summary>
    	public interface IXmlParser
    	{
    		/// <summary>
    		/// 当指定的XMLNode不为空时,分析处理用XML节点描述特征的对象。
    		/// </summary>
    		IXmlParser Parse();
    
    	}//End Interface
    
    }//End NameSpace

       但是Javascript不是强类形的,严格来说也不是面向对象编程语言。函数定义参数时不必指定类型,给我们编程灵活的同时,也下了一个套,有些错误不能进行编译检查,只有在运行时才能冷不丁的爆出大bug。下面用JavaScript定义了IXmlParser。

    /*
    * 表示分析处理用XML节点描述特征的对象的接口。返回IXmlParser
    */
    jXmlParser.IXmlParser = function () {
        //当指定的XMLNode不为空时,分析处理用XML节点描述特征的对象。    
        this.Parse = function () {
            GoldPrinter.Throw.Msg("这是IXmlParser的Parse() ,接口类不要实例化!\r\n类型:" + typeof (this) + "真实类名" + this.GetType());
            return this;
        };
        //模拟C#,获取实例的类型,js如果不实现,都返回object
        this.GetType = function () { return "GoldPrinter.XmlParser.IXmlParser";};
    }

    在上而的代码中,jXmlParser.IXmlParser实际全称是GoldPrinter.XmlParser.IXmlParser,为了简写,借用了C#的方式

    using jXmlParser = GoldPrinter.XmlParser;

    在JS中的实现是

    var jGoldPrinter = GoldPrinter.Drawing;

    C#的基类是object,有一个GetType()用于返回当前类的类型。所以在JS实现的时候因为js的object没有此方法,所以在JS中把GetType()相应的加上了。

  4. 接下来的博文,我们将用JS,模拟C#的名字空间、面向对象类、类的继承、类的实例化调用等面向对象编程。

控件功能强大,却简单易用,所有调用如同JavaScript扩展语句, 主要接口函数如下: PRINT_INIT 打印初始化 SET_PRINT_PAGESIZE 设定纸张大小 ADD_PRINT_HTM 增加超文本项 ADD_PRINT_TEXT 增加纯文本项 ADD_PRINT_TABLE 增加表格项 ADD_PRINT_SHAPE 画图形 SET_PRINT_STYLE 设置对象风格 PREVIEW 打印预览 PRINT 直接打印 PRINT_SETUP 打印维护 PRINT_DESIGN 打印设计 ... 样例清单 1.如何在页面内嵌入控件见样例一 2.如何选材打印当前页面内容见样例二 3.如何用代码生成打印页见样例三 4.如何打印设计和定位套打见样例四 5.如何控制纸张大小和连续打印见样例五 6.如何输出多页长文档及双面打印见样例六 7.如何定向输出见样例七 8.如何打印图片见样例八 9.如何用程序加载打印维护背景图见样例九 10.如何控制打印样式(STYLE)见样例十 11.如何直接打印条形码见样例十一 12.如何读写本地文件见样例十二 13.如何打印旋转内容见样例十三 14.如何按URL打印见样例十四 15.如何打印表格的页头页尾见样例十五 16.如何设置预览窗口大小见样例十六 17.如何发打印机指令或直接读写端口见样例十七 18.如何打印幅面高度不固定的票据见样例十八 19.如何内嵌显示及预览时包含背景图见样例十九 20.如何强制分页并预览多页卡片见样例二十 21.如何控制打印维护的功能权限见样例二十一 22.如何构建自己的纯WEB打印预览见样例二十二 23.如何居中打印超文本见样例二十三 24.如何选择界面皮肤见样例二十四 25.如何指定输出到哪页或仅预览见样例二十五 26.如何提高多页打印的性能见样例二十六 27.如何导出数据到Excel文件见样例二十七 28.如何快速读取客户端系统信息见样例二十八 29.如何使用其它长度单位见样例二十九 30.如何分页输出页面内容见样例三十 31.如何打印表格的分页小计或合计见样例三十一 32.如何实现清晰的图表打印见样例三十二 33.如何实现甘特图等的图表打印见样例三十三 34.如何使用百分比%和满页打印见样例三十四 35.如何获得打印结果和程序代码见样例三十五 36.如何在设计过程中用js编辑内容见样例三十六 37.如何打印公章效果图见样例三十七 38.如何用BASE64编码输出图片见样例三十八 39.如何打印田字格、上划线等文本见样例三十九 40.如何进行数据格式转换见样例四十 41.如何把内容关联后按顺序打印见样例四十一 42.如何把整页内容缩放打印见样例四十二 43.如何分页打印综合表格见样例四十三 44.如何缩放打印单个超文本内容见样例四十四 45.如何获得打印状态及最终结果见样例四十五 46.如何设置右边距和下边距见样例四十六
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值