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

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

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

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

        private void btnLicensePrint_Click(objectsender, EventArgs e)
{
string tempalte = "Template/LicensePrintTemplate.htm";//相对目录 HelperClassAdapter adapter = newHelperClassAdapter(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
= newFrmWebBrowser();
frmView.webBrowser1.Navigate(filePath);
frmView.Show();
}

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

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

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

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

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

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

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

标签: none

添加新评论