背景
检验的打印包含报告单打印,表格数据打印,图表打印等。以报告单打印为例,不光要检验系统自己的浏览器能打印报告,还要自助机、HIS、归档报告PDF等。而且伴随着随时调整打印格式的要求。打印的实现要求满足多方调用的要求,和方便打印格式调整的要求。为此抽象了打印元数据,元数据定义了常用点、线、文本、多边形、条码、图片、打印机、换页等元素的数据格式。基于元数据定义实现了打印dll,该dll只对打印元数据负责,绘制打印不涉及业务逻辑。由脚本语言JS和Cache数据库的M脚本语言控制打印元数据的输出来控制打印。具体调用分别包装打印EXE、发布打印服务、IE的cab包调用、ClickOne的调用等。最终调用的目的都是驱动打印动态库取得绘制的数据打印。
核心dll结构
调用结构图
JS控制元素
JS打印绘制
效果
对JS的Canvas绘图等包装代理方法实现界面绘制和打印共用逻辑(绘图逻辑用包装的代理方法实现打印绘制一体化)
基于打印元数据的报告设计器
由Cache数据库的M脚本语言结合模板设计器维护的数据融合业务数据输出打印数据给打印dll实现打印功能。从而做到对各种调用的开发和对打印格式调整的开发。结合BS-CS交互实现整个检验的打印功能。