NCV5打印模板技术红皮书Word文档下载推荐.docx

上传人:b****1 文档编号:15357830 上传时间:2022-10-29 格式:DOCX 页数:84 大小:2.04MB
下载 相关 举报
NCV5打印模板技术红皮书Word文档下载推荐.docx_第1页
第1页 / 共84页
NCV5打印模板技术红皮书Word文档下载推荐.docx_第2页
第2页 / 共84页
NCV5打印模板技术红皮书Word文档下载推荐.docx_第3页
第3页 / 共84页
NCV5打印模板技术红皮书Word文档下载推荐.docx_第4页
第4页 / 共84页
NCV5打印模板技术红皮书Word文档下载推荐.docx_第5页
第5页 / 共84页
点击查看更多>>
下载资源
资源描述

NCV5打印模板技术红皮书Word文档下载推荐.docx

《NCV5打印模板技术红皮书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《NCV5打印模板技术红皮书Word文档下载推荐.docx(84页珍藏版)》请在冰豆网上搜索。

NCV5打印模板技术红皮书Word文档下载推荐.docx

第三章模板编辑器的使用12

1.打印模板编辑器12

2.单元格数据格式13

3.单元格内容的折行15

4.在模板中使用图片17

5.打印图章(公章)21

6.页面设置23

7.页码设置29

8.单元格变量的连接34

9.功能节点模板的管理34

第四章模式化应用36

1.普通分页场景36

2.强制分页场景39

3.凭证分页场景46

4.工资条分页场景49

5.卡片分页场景52

6.动态列的应用54

7.批量打印应用57

8.Excel导出59

8.1Excel导出功能的调用方式59

8.2Excel导出设置60

9.打印设置61

第五章公式的应用66

1.本页小计(_subtotal_)公式66

2.合计(_total_)公式68

3.红字(_redword_)公式69

4.其它非常用的打印特有公式70

4.1行号(_rowno_公式)70

4.2行数(_rowcount_)公式70

4.3金额空格(_space_)公式70

4.4中文金额空格(_cnspace_)公式70

4.5日期空格(_datespace_)公式70

4.6中文日期空格(_datecnspace_)公式70

4.7变量扩展(_expandvar_)公式70

4.8打印公式与NC系统公式的嵌套使用71

5.修改显示格式的公式71

5.1单元格内容对齐方式71

5.2单元格背景色(_bgcolor_)公式72

5.3字体颜色(_fontcolor_)公式72

5.4字体(_fontfamily_)公式72

5.5字体大小(_fontsize_)公式72

5.6字体风格(_fontstyle_)公式72

5.7文字下划线(_fontunderline_)公式72

5.8条件格式73

5.9组合格式73

5.10在格式公式中使用null73

6.公式的综合使用74

第六章基于NC打印的二次开发77

1.UI工厂:

快速有效地实现打印77

2.一个二次开发范例80

3.打印监听器82

第七章常见问题解答83

1.出现打印问题,如何迅速地定位问题83

2.本页小计公式每页都显示相同的值,为什么?

85

3.Excel导出时,是否还会发生内存溢出现象?

导出效率如何?

4.如何进行双面打印86

5.批量打印是否可预览?

打印时是否可选择页码范围86

6.如何模拟测试打印的效果87

第八章V5打印模块新特性88

第一章前言

1.总体介绍

假设有一张凭证需要打印出来,打印效果如下,应如何实现?

如果把打印机想象成一张白板的话,打印,就是在白板上做绘制。

上面的这张凭证,可以很容易地绘制出来。

但是,当客户想要调整“收款凭证”这四个字的位置,改变它的字体,或是在下面的表格中增加金额列,是否必须修改打印程序?

另外每张凭证的摘要数据、会计科目数据都是不一样的,如何用统一的打印程序将不同的数据打印出来?

解决这个问题需要做到:

1)可以配置字体、颜色、文本的打印位置、表格的行列等等,这满足了客户对于显示的个性化要求,2)在配置的时候,能把数据进行某种抽象,起到象征作用。

实际打印时,抽象化的数据被赋予真实的值。

NC系统的打印模板,就是采用这种思路设计出来的。

上面的这张凭证的打印模板如下图:

可以看到,打印模板是一个表格,其基本元素是单元格。

对于单元格,可以定义字体、颜色、边框、文本对齐方式;

对于行,可以定义行高、插入行、删除行;

对于列,可以定义列宽、插入列、删除列。

这些功能使得凭证的外观可方便灵活地配置。

那如何进行数据的抽象呢?

我们需要看看打印模板编辑器的全貌:

上面打印模板编辑器的右侧,有一个列表,列出了“凭证类别名称”、“制单日期”、“摘要”等在左侧表格以粉色背景出现的内容,这个列表里面的值,就是对数据的抽象,被称为数据源变量。

因此,模板信息,既包括了显示的样式,又包括了数据的抽象。

它足以适应个性化的显示和动态的数据。

最后一个问题是,如何赋真实的值给变量。

上面的“凭证类别名称”、“摘要”等变量的真实的值来自于要打印的凭证,因此需要把要打印的凭证的指定信息取出来赋予给打印变量,实现这个过程,应该采用了下面的流程:

左边的凭证代表财务中的凭证对象,它包含了真正的业务信息,中间的数据源是打印的标准取数接口。

开发人员应从凭证中取得打印模板要使用的变量的数据,放到数据源里,打印模板从数据源接口取得变量的真实的值,填充到模板中。

2.快速入门

第一节利用一个实际的例子,介绍了NC打印的设计思路,这一节,将继续结合上面的实例,对设计思路做更加深入的讲解,帮助读者快速入门。

完成实例中凭证的打印,分了两个步骤:

第一步是将最终的效果抽象成一个模型,在打印模板中定义出来,第二步是创建数据源,通过该数据源能取到打印模板引用的变量的值。

第一步工作由开发人员或实施顾问完成,第二步工作由开发人员完成。

开发人员如何创建数据源?

打印模板提供了IDataSource接口,该接口的方法如下:

packagenc.ui.pub.print;

publicinterfaceIDataSource{

//返回数据源中所有的变量表达式

publicjava.lang.String[]getAllDataItemExpress();

//返回数据源中所有的变量名

publicjava.lang.String[]getAllDataItemNames();

//根据变量的表达式,取得变量的真实的值

publicjava.lang.String[]getItemValuesByExpress(

StringitemExpress);

//如果某变量的值都是数字型的,返回true

publicbooleanisNumber(StringitemExpress);

//取的节点编号,推荐不实现

publicjava.lang.StringgetModuleName();

//取得变量依赖的其他变量,推荐不实现

publicjava.lang.String[]getDependentItemExpressByExpress(

}

针对实例中的数据,可以简单地创建一个模拟的数据源(简单起见,未列出所有变量,只是示范性地实现凭证类别名称、制单日期、摘要、借方本币四个变量),比如:

publicclassMyTestDataSourceimplementsIDataSource{

publicjava.lang.String[]getAllDataItemExpress(){

returnnewString[]{

“vouchertypename”,”dbilldate”,”summary”,”debitmny”

};

publicjava.lang.String[]getAllDataItemNames(){

“凭证类别名称”,”制单日期”,”摘要”,”借方本币”

StringitemExpress){

if(itemExpress.equals(“vouchertypename”)){

returnnewString[]{“收款凭证”};

}

elseif(itemExpress.equals(“dbilldate”)){

returnnewString[]{“2005-12-10”};

elseif(itemExpress.equals(“summary”)){

returnnewString[]{

“收款,客户1”,“收款,客户2”,“收款,客户3”,

“收款,客户4”,“收款,客户5”

}

elseif(itemExpress.equals(“debitmny”)){

returnnewString[]{“”,””,””,””,”1000”};

returnnull;

publicbooleanisNumber(StringitemExpress){

//借方本币是数字

if(itemExpress.equals(“debitmny”)){

returntrue;

returnfalse;

//取的节点编号,可不实现

publicjava.lang.StringgetModuleName(){

有了打印模板,有了数据源,打印工作的所有准备活动都已完毕,只差一点——调用打印程序,完成打印。

NC打印程序的统一入口类是nc.ui.pub.print.PrintEntry,下面介绍如何调用PrintEntry。

PrintEntrype=newPrintEntry(当前窗口对象,newMyTestDataSource());

//设置打印模板ID的查询条件

pe.setTemplateID(公司,节点编号,用户,业务类型);

//如果分配了多个打印模板,可选择一个模板

pe.selectTemplate();

//开始打印

pe.print();

//也可以先预览,再在预览界面打印

//pe.preview();

至此,整个工作才全部结束。

不过,客户对打印的要求,并不像上例中这么简单,比如:

观察实例的模板,可以看到不同的行具有不同的背景颜色,其中只有第5行是白色背景,其他都是藏青色背景。

而通过预览效果可以看到,第5行被动态向下扩展了(扩展行的行高列宽及单元格式都克隆了模板中的相应单元格),而其他行却没有扩展。

为什么会这样?

假设模板中第5行的变量有100个值,如果都要扩展的话,一页能打下吗,要是打不下,该如何分页,能否定义不同的分页方式?

除了通过数据源取数,还有什么取数方式,可否定义公式对数据源运算?

要对一批凭证做批量打印,该怎么做?

如果要把凭证输出到Excel中,该怎么做?

有特殊的页码要求,该怎么配置?

要把内容打印到特殊的纸张上,怎么定义纸型?

要解答这些问题,需要对打印模板有更深入的了解。

后面的内容,致力于以实例讲透各种高级功能。

下一节,将对N

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1