在我的早期的一篇文章中《Web打印的解决方案之证件套打》,介绍过基于Web的证件套打方式;另外在我的代码生成工具中,一直介绍使用基于NVelocity模板引擎生成的代码,能够高效、快速、拥抱变化式的生成想要的代码。那么结合两者的特点,我们可以Winfrom界面中,利用NVelocity动态生成页面代码,然后利用WebBrowser控件,实现在Winfrom中的证件套打。在我的Winform框架集成了一些证件的套打功能,这样更能丰富日常开发中碰到的各种打印问题,提供更加广阔的应用前景。

首先我们来了解一下实现的效果,然后再来分析其中的实现思路和代码片段。

Winform开发框架之证件套打

上面的Winform套打模块中,包含了三个不同证件,6个套打打印的效果。下面我们一个运输许可证的套打为例进行介绍讲解。

首先就是通过上面填写的数据,利用模板引擎自动生成页面代码,把相关的数据写到网页里面去。

        private void btnLicensePrint_Click(object sender, EventArgs e)
        {
            string tempalte = "Template/LicensePrintTemplate.htm";//相对目录
            HelperClassAdapter adapter = new HelperClassAdapter(tempalte);
            adapter.DirectoryOfOutput = "Template";
            adapter.AddKeyValue("CompanyName", this.txtCompanyName.Text)
                .AddKeyValue("Scope", this.txtScope.Text)
                .AddKeyValue("License", this.txtLicense.Text)
                .AddKeyValue("ParkAddr", this.txtParkAddr.Text)
                .AddKeyValue("IssuingDept", this.txtIssuingDept.Text)
                .AddKeyValue("LicenseYear", this.txtLicenseDate.Value.Year)
                .AddKeyValue("LicenseMonth", this.txtLicenseDate.Value.Month)
                .AddKeyValue("LicenseDay", this.txtLicenseDate.Value.Day)
                .AddKeyValue("ValidateYear", this.txtLicenseValidity.Value.Year)
                .AddKeyValue("ValidateMonth", txtLicenseValidity.Value.Month)
                .AddKeyValue("ValidateDay", this.txtLicenseValidity.Value.Day)
                .AddKeyValue("Year", DateTime.Now.Year)
                .AddKeyValue("Month", DateTime.Now.Month)
                .AddKeyValue("Day", DateTime.Now.Day)
                .AddKeyValue("EconomicType", this.txtEconomicType.Text);
            string filePath = adapter.ExecuteSingle();
            filePath = Path.Combine(Application.StartupPath, filePath);

            FrmWebBrowser frmView = new FrmWebBrowser();
            frmView.webBrowser1.Navigate(filePath);
            frmView.Show();
        }

通过以上的代码,会根据模板生成相应的页面文件,然后界面就会看到如下所示的效果,虽然看不到具体的套打数据,但是已经写到网页里面去了。

Winform开发框架之证件套打

里面的页面代码会生成相应的证件数据,如下所示。

Winform开发框架之证件套打

当我们选择“打印预览”的时候,就会调用打印控件进行套打显示了,里面显示的信息就是具体的证件信息了。当然,套打的背景是不会输出到打印机上的。

Winform开发框架之证件套打

当我们选择“打印维护”的时候,就可以根据测试打印效果,对内容在纸张中的位置进行调整,指导满意位置,可以把调整的位置信息保存。

它是保存到本地的文件系统里面去的,所以只需要一次设置保存即可,今后就可以利用调好的位置进行套打了。

Winform开发框架之证件套打

这样我们就可以实现基于Winform的证件套打,客户可以定制修改位置,使用起来非常友好和人性化。

由于Winform里面已经集成了打印控件的注册认证,因此打印的时候,不会出现版权文字信息了,真的是省心,省钱,呵呵。

本文转自博客园伍华聪的博客,原文链接:Winform开发框架之证件套打,如需转载请自行联系原博主。



分类:

技术点:

相关文章: