打印模板技术红皮书NC-UAP5.0用友NC-UAP2024-05-12目录第一章前言..........................................................................................11.总体介绍...................................................................................................12.快速入门...................................................................................................3第二章基本概念..................................................................................71.打印模板...................................................................................................72.打印变量...................................................................................................73.打印数据源...............................................................................................94.固定行、固定列.....................................................................................105.向下扩展和动态列.................................................................................106.固定行的单元格变量的扩展.................................................................107.分页.........................................................................................................118.打印场景.................................................................................................11第三章模板编辑器的使用................................................................121.打印模板编辑器.....................................................................................122.单元格数据格式.....................................................................................133.单元格内容的折行.................................................................................184.在模板中使用图片.................................................................................205.打印图章(公章)......................................................................................246.页面设置.................................................................................................267.页码设置.................................................................................................328.单元格变量的连接.................................................................................379.功能节点模板的管理.............................................................................37第四章模式化应用............................................................................391.普通分页场景.........................................................................................392.强制分页场景.........................................................................................423.凭证分页场景.........................................................................................494.工资条分页场景.....................................................................................525.卡片分页场景.........................................................................................556.动态列的应用.........................................................................................577.批量打印应用.........................................................................................608.EXCEL导出.............................................................................................628.1Excel导出功能的调用方式...................................................................................628.2Excel导出设置.......................................................................................................639.打印设置.................................................................................................64第五章公式的应用............................................................................691.本页小计(_SUBTOTAL_)公式.................................................................692.合计(_TOTAL_)公式..........................................................................713.红字(_REDWORD_)公式.....................................................................724.其它非常用的打印特有公式.................................................................73第2页4.1行号(_rowno_公式)..........................................................................................734.2行数(_rowcount_)公式......................................................................................734.3金额空格(_space_)公式....................................................................................734.4中文金额空格(_cnspace_)公式........................................................................734.5日期空格(_datespace_)公式.............................................................................734.6中文日期空格(_datecnspace_)公式......................................................................734.7变量扩展(_expandvar_)公式.................................................................................734.8打印公式与NC系统公式的嵌套使用..................................................................745.修改显示格式的公式.............................................................................745.1单元格内容对齐方式.............................................................................................745.2单元格背景色(_bgcolor_)公式..............................................................................755.3字体颜色(_fontcolor_)公式..............................................................................755.4字体(_fontfamily_)公式....................................................................................755.5字体大小(_fontsize_)公式......................................................................................755.6字体风格(_fontstyle_)公式.....................................................................................755.7文字下划线(_fontunderline_)公式...................................................................755.8条件格式................................................................................................................765.9组合格式................................................................................................................765.10在格式公式中使用null..........................................................................................766.公式的综合使用.....................................................................................77第六章基于NC打印的二次开发.....................................................801.UI工厂:快速有效地实现打印............................................................802.一个二次开发范例.................................................................................833.打印监听器.............................................................................................854.直接打印.................................................................................................85第七章常见问题解答........................................................................871.出现打印问题,如何迅速地定位问题.................................................872.本页小计公式每页都显示相同的值,为什么?.................................893.EXCEL导出时,是否还会发生内存溢出现象?导出效率如何?.....894.如何进行双面打印.................................................................................905.批量打印是否可预览?打印时是否可选择页码范围.........................906.如何模拟测试打印的效果.....................................................................91第八章V5打印模块新特性..............................................................92第九章V5.5打印模块新特性...........................................................94第3页第一章前言1.总体介绍假设有一张凭证需要打印出来,打印效果如下,应如何实现?如果把打印机想象成一张白板的话,打印,就是在白板上做绘制。上面的这张凭证,可以很容易地绘制出来。但是,当客户想要调整“收款凭证”这四个字的位置,改变它的字体,或是在下面的表格中增加金额列,是否必须修改打印程序?另外每张凭证的摘要数据、会计科目数据都是不一样的,如何用统一的打印程序将不同的数据打印出来?解决这个问题需要做到:1)可以配置字体、颜色、文本的打印位置、表格的行列等等,这满足了客户对于显示的个性化要求,2)在配置的时候,能把数据进行某种抽象,起到象征作用。实际打印时,抽象化的数据被赋予真实的值。NC系统的打印模板,就是采用这种思路设计出来的。上面的这张凭证的打印模板如下图:第1页可以看到,打印模板是一个表格,其基本元素是单元格。对于单元格,可以定义字体、颜色、边框、文本对齐方式;对于行,可以定义行高、插入行、删除行;对于列,可以定义列宽、插入列、删除列。这些功能使得凭证的外观可方便灵活地配置。那如何进行数据的抽象呢?我们需要看看打印模板编辑器的全貌:上面打印模板编辑器的右侧,有一个列表,列出了“凭证类别名称”、“制单日期”、“摘要”等在左侧表格以粉色背景出现的内容,这个列表里面的值,就是对数据的抽象,被称为数据源变量。因此,模板信息,既包括了显示的样式,又包括了数据的抽象。它足以适应个性化的显示和动态的数据。最后一个问题是如何赋真实的值给变量。上面的“凭证类别名称”、“摘要”等变量的真实的值来自于要打印的凭证,因此需要把要打印的凭证的指定信息取出来赋予给打印变量,实现这个过程,应该采用了下面的流程:第2页左边的凭证代表财务中的凭证对象,它包含了真正的业务信息,中间的数据源是打印的标准取数接口。开发人员应从凭证中取得打印模板要使用的变量的数据,放到数据源里,打印模板从数据源接口取得变量的真实的值,填充到模板中。2.快速入门第一节利用一个实际的例子,介绍了NC打印的设计思路,这一节,将继续结合上面的实例,对设计思路做更加深入的讲解,帮助读者快速入门。完成实例中凭证的打印,分了两个步骤:第一步是将最终的效果抽象成一个模型,在打印模板中定义出来,第二步是创建数据源,通过该数据源能取到打印模板引用的变量的值。第一步工作由开发人员或实施顾问完成,第二步工作由开发人员完成。开发人员如何创建数据源?打印模板提供了IDataSource接口,该接口的方法如下:packagenc.ui.pub.print;publicinterfaceIDataSource{//返回数据源中所有的变量表达式publicjava.lang.String[]getAllDataItemExpress();//返回数据源中所有的变量名publicjava.lang.String[]getAllDataItemNames();//根据变量的表达式,取得变量的真实的值publicjava.lang.String[]getItemValuesByExpress(StringitemExpress);//如果某变量的值都是数字型的,返回truepublicbooleanisNumber(StringitemExpress);//取的节点编号,推荐不实现publicjava.lang.StringgetModuleName();//取得变量依赖的其他变量,推荐不实现publicjava.lang.String[]getDependentItemExpressByExpress(StringitemExpress);第3页}针对实例中的数据,可以简单地创建一个模拟的数据源(简单起见,未列出所有变量,只是示范性地实现凭证类别名称、制单日期、摘要、借方本币四个变量),比如:publicclassMyTestDataSourceimplementsIDataSource{//返回数据源中所有的变量表达式publicjava.lang.String[]getAllDataItemExpress(){returnnewString[]{“vouchertypename”,”dbilldate”,”summary”,”debitmny”};}//返回数据源中所有的变量名publicjava.lang.String[]getAllDataItemNames(){returnnewString[]{“凭证类别名称”,”制单日期”,”摘要”,”借方本币”};}//根据变量的表达式,取得变量的真实的值publicjava.lang.String[]getItemValuesByExpress(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;}//如果某变量的值都是数字型的,返回truepublicbooleanisNumber(StringitemExpress){//借方本币是数字if(itemExpress.equals(“debitmny”)){returntrue;第4页}returnfalse;}//取的节点编号,可不实现publicjava.lang.StringgetModuleName(){returnnull;}//取得变量依赖的其他变量,推荐不实现publicjava.lang.String[]getDependentItemExpressByExpress(StringitemExpress){returnnull;}}有了打印模板,有了数据源,打印工作的所有准备活动都已完毕,只差一点——调用打印程序,完成打印。NC打印程序的统一入口类是nc.ui.pub.print.PrintEntry,下面介绍如何调用PrintEntry。PrintEntrype=newPrintEntry(当前窗口对象,newMyTestDataSource());//设置打印模板ID的查询条件pe.setTemplateID(公司,节点编号,用户,业务类型);//如果分配了多个打印模板,可选择一个模板pe.selectTemplate();//开始打印pe.print();//也可以先预览,再在预览界面打印//pe.preview();至此,整个工作才全部结束。不过,客户对打印的要求,并不像上例中这么简单,比如:观察实例的模板,可以看到不同的行具有不同的背景颜色,其中只有第5行是白色背景,其他都是藏青色背景。而通过预览效果可以看到,第5行被动态向下扩展了(扩展行的行高列宽及单元格式都克隆了模板中的相应单元格),而其他行却没有扩展。为什么会这样?假设模板中第5行的变量有100个值,如果都要扩展的话,一页能打下吗,要是打不下,该如何分页,能否定义不同的分页方式?除了通过数据源取数,还有什么取数方式,可否定义公式对数据源运算?要对一批凭证做批量打印,该怎么做?如果要把凭证输出到Excel中,该怎么做?有特殊的页码要求,该怎么配置?要把内容打印到特殊的纸张上,怎么定义纸型要解答这些问题,需要对打印模板有更深入的了解。后面的内容,致力于以实例讲透各种高级功能。下一节,将对NC打印的基本概念做详细的描述。第5页第二章基本概念1.打印模板打印模板定义了打印模型和各种打印选项。使用者将打印模型建立在打印模板的表格中,每一个单元格都可以定义独立的字体、颜色、边框、高度宽度和绑定的变量。另外,打印模板还可以定义关于打印的一些页面设置,比如页码、页眉页脚、纸型等等。2.打印变量打印变量是对要打印的数据的抽象,打印变量通过拖拽方式从变量列表添加到模板中。在实际打印或预览时,用到的打印变量会被赋值。一共有三种类型的变量:数据源变量、自定义变量和系统变量。1.数据源变量从开发人员创建的数据源获取值。字符型数据源变量在模板编辑器中以粉色为背景,图片型数据源变量较为特殊,除了像字符型数据源变量一样将变量插入到单元格,还需要在单元格的属性设置对话框中将单元格内容类型设置为图像变量,这时图片型数据源变量在模板编辑器中的背景会变为红色。2.自定义变量间接地通过公式获取值。自定义变量通过公式编辑器定义,有两种使用公式的方式:1)对数据源变量定义运算公式,比如统计公式:合计、小计,数据格式公式:转换成中文、加空格等,格式公式:左对齐、字体颜色等,更多公式的使用可参第6页照第三章“公式的应用”;2)从基本档案取数,它的值来自于NC系统可访问的数据库的某个表的某字段值。自定义变量和字符型数据源变量一样,在模板编辑器的单元格以粉色为背景;用户可以通过“设置/自定义变量”菜单管理自定义变量,同时在自定义变量列表提供鼠标右键快捷菜单来增加、修改删除自定义变量。管理界面如下图所示:比如定义一个表示员工任务总数的自定义变量,首先输入变量描述“任务总计”,然后点击变量公式按钮在弹出的公式定义界面定义变量取值方式:第7页3.系统变量它的值来源于系统预置的数据或当前客户端的信息,比如单位名称、日期、用户等,此外,在模板管理界面通过“上传图片”上传的图片也作为系统变量出现在“系统变量”列表中。3.打印数据源打印数据源是打印的取数接口,规定如何获取打印数据。目前提供IDataSource、IDataSource2、IExDataSource三个接口。其继承关系如下:IDataSourceIDataSource2IExDataSourceIDataSource是最基本的数据源接口,此接口支持字符串格式(String)的打印数据,如果需要打印的数据为数字、时间等格式,可先转化为字符串。IDataSource2是凭证打印专用数据源接口,可以设置分录条数。第8页IExDataSource可以用于传入除String外的其他数据类型数据,主要用于传入图片。更详细用法可参照第四章“如何在打印模板中嵌入图片”一节。4.固定行、固定列在模板中,背景颜色为藏青色的行是固定行,背景颜色为藏青色的列是固定列。“固定”的意思不是指位置的固定,而是指它们在每一页都会显示。比如单据的表头表尾信息、单据表体的标题。因此,固定行指的是这一行的单元格定义的内容在每一页都会打印,固定列指的是这一列的单元格在每一页都会打印。注意:对于一页纸打印多张表的情况,比如强制分页和凭证分页场景,固定行在每张表中都会打印。5.向下扩展和动态列如果某个变量具有多个值,在打印的时候,它们会为每个值复制打印模板中自身的单元格(以获得相同的显示属性),将每个值单独放入,这就是单元格的扩展。(也只有当该单元格绑定的变量具有多个值时单元格才会扩展)。例如,在上一节的实例中,第5行进行了扩展。而现代人的阅读顺序是从左到右,从上到下,因此扩展方向要么向右,要么向下。在打印模板中,往单元格中置入一个变量,默认的扩展方向是向下,当把一列设置成动态列时,这一列的所有单元格才变为向右扩展。6.固定行的单元格变量的扩展固定行上单元格的变量若有多个值,不会像非固定行那样向下扩展。固定行在每页都会显示,它默认在每页都显示第一个值。但是,在某些场景中(凭证分页和工资条分页),根据页码次序选择变量的值。在上一节的实例中,第3行是固定行,其模板内容为:在第一页,这一行的预览内容为:第二页,预览内容为:数据源中,voucher91变量有两个值,第一页选择了第一个值,第二页选择了第二个值。7.分页与分页关系最紧密的因素是“纸张大小”,也就是纸型。当纵向的内容高度超过了纸张的高度,就会自动分页(纵向分成多页,向下),当横向的内容宽度超第9页过了纸张的宽度,也会自动分页(横向分成多页,向右)。除了这种自动分页方式,有些场景中还需要强制性地分页,理由很多:比如满足特定格式的套打纸张,比如固定的合同要求,等等。在上一节的凭证打印实例中,模板中的非固定行(第5行)每页最多扩展5行,这是因为该模板用于凭证套打,纸制的凭证本身就已打好了表格。因此,NC打印必须支持自动分页和强制性地分页。8.打印场景NC打印目前分成五种场景:普通分页场景、强制分页场景、凭证分页场景、工资条场景、卡片分页场景。场景名称分页模式固定行变量如何选择特点普通分页自动分页每页都选择第一个值强制分页强制性地分页每页(表)都选择第一个值可选”自动填充空行”,”一页打多张凭证”凭证分页强制性地分页根据页(表)码次序选择值可选”自动填充空行”,”一页打多张凭证”工资条分页自动分页根据工资条次序选择值自动折行,一页可打多条卡片分页自动分页根据卡片次序选择值在“模式化应用”章中,会详细介绍这五种场景,在这里需要强调的是,这五种场景的区别绝不仅仅是分页模式。第10页第三章模板编辑器的使用1.打印模板编辑器通过以上章节,我们已经对打印模板编辑器有了整体上的了解,本节更加详细介绍一下模板编辑器的使用。上图是一个员工任务完成情况表的打印模板,从图中可以清晰的看出,模板编辑器分为菜单栏、工具栏、编辑栏、标尺、编辑区、状态栏、变量区几个部分。其中工具栏、编辑栏、标尺、状态栏都可以通过“视图”菜单控制是否显示。模板采用类似于Excel方式进行编辑,以单元格为单位,单元格可以合并、拆分;在编辑区提供四种右键快捷菜单:选中单个单元格可以粘贴复制删除单元格内容并设置单元格格式,单元格格式对话框如下图,在此对话框可以设置单元格的对齐、字体、边框、背景、Excel导出数字格式,单元格内容类型,其中更多关于Excel导出数字格式的信息可参照第二章“模式化应用”中“Excel导出”节;选中多个单元格可以合并拆分,选中行可以设置行高、动态行等,选中列可以设置列宽、固定列等;菜单栏中的“表格”菜单项也提供了相似的功能。标尺以毫米为单位,方便模板的测量绘制。模板编辑中做的操作可以通过“编辑”菜单项的第11页“撤销”“重做”操作进行恢复。右侧为模板可以使用的变量区,包括数据源变量、自定义变量和系统变量。数据源变量无法编辑,自定义变量界面中可以通过右键快捷菜单增删改,系统变量无法编辑。在模板中引用变量有两种方式,一种可以通过拖拽,从右面变量列表中拖拽一个变量放到编辑区中的某个单元格,另一种通过两次点击,鼠标点击一个变量,然后点击某个单元格。双击一个含有变量的单元格,会弹出单元格内容编辑器,可在此界面中给单元格增加文本常量、增加多个变量并设置各个常量变量之间的顺序,关于单元格内容编辑器的更多内容可参看“&是什么意思”一节。2.单元格数据格式Excel中可以设置单元格的数字格式,比如金额、分数等,便于统计、排序。相应的,打印模板也提供了单元格数据类型设置功能,导出到Excel后,单元格会具有相应的数字格式。若要设置单元格导出到Excel中的数字格式,首先选中单元格,在“单元格设置\数字”对话框中选择数字类型,可选的类型包括:常规、数值、货币、日期、时间、百分比、分数、自定义。数值类型可设置小数位数,是否使用千分位以及负数的样式正常:比如-100显示为-100红字:比如-100显示为100负号红字:比如-100显示为-100第12页括号:比如-100显示为(100)括号红字:比如-100显示为(100)货币格式可设置小数位数,货币符号,和负数的显示样式,具体样式参见数值格式。日期格式可以设置日期显示为长时间和短时间格式。第13页时间格式可设置的时间显示为长时间和短时间,若要同时显示时间和日期,可使用日期格式。百分比、分数和科学技术格式可以设置小数位数。第14页自定义格式通过直接输入格式串来定义excel导出格式。格式字符串的定义方式如下:下面分别介绍各种格式:1、常规:单元格内容为字符串,非数字2、数值:一般数字的表示,比如定义小数位数、是否显示千分位等。常用格式如下:"0"–整数"0.00"–小数位数两位,三位则三个0,依次类推"#,##0"–带千分位分隔符“,”的整数"#,##0.00"–带千分位分隔符“,”的两位小数"(#,##0_);[Red](#,##0)"–红字千分位整数"(#,##0.00_);[Red](#,##0.00)"–红字千分位两位小数3、货币:一般货币的表示。"($#,##0_);($#,##0)"–“$”前缀的千分位货币"($#,##0_);[Red]($#,##0)"-“$”前缀的红字千分位货币"($#,##0.00);($#,##0.00)"-“$”前缀的千分位两位小数货币"($#,##0.00_);[Red]($#,##0.00)"-“$”前缀的红字千分位两位小数货币4、日期:一般日期格式的表示。"m/d/yy"–形如8/18/1980格式日期"d-mm-yy"–形如18-08-1980格式日期"d-mm"–形如18-08格式日期"mm-yy"–形如08-80格式日期5、时间:一般时间格式的表示,比如:第15页"h:mm"–形如9:18格式日期"h:mm:ss"–形如9:18:36格式日期百分比:一般百分数格式的表示,比如:"0%"–形如8%百分数0.00%-形如8.00%百分数分数:一般分数格式的表示,比如:"#?/?""#??/??"注意:由于打印模板使用开源项目POI导出Excel,而POI单元格数字格式定义不支持中文,所以以上各种数字格式中不能包含中文,否则会显示为乱码。更多格式定义请参阅http://office.microsoft.com/assistance/hfws.aspx?AssetID=HP051995002052&CTT=3&Origin=HP030641352052&Client=13.单元格内容的折行在一些单元格中,希望把显示的内容分成多行显示,那么可在断行处加一个\n标志,如图所示:并进入该单元格的“单元格设置”对话框,选择“自动折行”,如图:第16页预览效果为:如果单元格绑定了多个自定义变量,变量之间要求折行显示。那么按下面的格式定义公式:变量1+“\n”+变量2比如我们定义如下的自定义变量:productname+“\n”+productprice显示的结果会将两个变量的值换行显示,可能的显示结果如下:产品名称0¥10.33第17页4.在模板中使用图片有些时候需要打印一些图片信息,比如客户通常需要在单据上显示公司Logo、员工的照片等。打印模板中的图片可以分为两类:静态图片和动态图片,静态图片为模板中的常量,不会发生变化,比如公司Logo;动态图片为模板中的变量,随着数据源中的图片变量变化,比如员工照片(不同员工有不同的照片)。对于在打印模板中使用静态图片,我们提供了上传图片功能,具体步骤如下1、在某个功能节点的模板管理界面,点击“上传图片”按钮选择图片文件,并确定,这里可以同时上传多个图片。注意:打印模板中支持gif、jpg、jpeg、png格式图片,但不支持bmp格式。上传后图片在模板编辑器中会作为系统变量使用。如下图,我们上传了一张名为logo.png的图片。第18页在左侧列表的尾部,列举了服务器文件夹中可读取的图片文件,将选中的图片添加到右侧列表,点击确定后,所有模板的系统变量列表中,即可出现以此文件命名的变量,将该变量选定到模板中,图片自动显示出来,如下所示:第19页预览效果为:在打印模板中使用动态图片类似于使用一般的变量,不同之处在于要实现不同的数据源接口,同时还需要设置一下图片变量所在单元格的内容类型为图片变量。具体步骤如下:第一步、实现IExDataSource数据源接口,IExDataSource继承自IDataSource接口,是特别为非String类型数据源变量作的扩展,它增加了两个方法方法一、publicjava.lang.Object[]getObjectByExpress(String第20页itemExpress);方法二、publicintgetObjectTypeByExpress(StringitemExpress);方法一根据变量名获得变量对应的对象,如果为图片则返回ImageIcon或Image对象数组;方法二返回变量的对象类型,有三个可取值:IExDataSource.STRING_TYPE(字符串类型,一般不需要使用,因为使用IDataSource数据源就可以满足)IExDataSource.IMAGE_TYPE(图片类型变量)IExDataSource.BIGTEXT_TYPE(大文本类型)。示例程序如下:publicObject[]getObjectByExpress(StringitemExpress){if(itemExpress.equals("photo")){Object[]pics=newObject[this.size];for(inti=0;i<pics.length;i++)pics[i]=newImageIcon(somepicpath);returnpics;}returnnull;}publicintgetObjectTypeByExpress(StringitemExpress){if(itemExpress.equals("photo"))returnIExDataSource.IMAGE_TYPE;return0;}步骤二、在模板中使用此图片变量,过程和一般的数据源变量一样。步骤三、设置图片变量所在的单元格的单元格文本类型为图片变量。打开图片变量的单元格设置对话框的“类型”选项卡,设置文本类型为“图片变量”。第21页这时,模板中图片变量字符背景会由粉红色变为红色,以区别于一般的字符串变量。这样,就完成了全部过程,从之前章节中的例子可以看到效果:不同的人员显示不同的照片。5.打印图章(公章)一些文档在打印时需要嵌进图章,这些图章不能作为正常的图片放进单元格中进行打印,因为它需要作为一个单独的图层绘制在文字之上,和其它的打印内容是一种“镶嵌”的关系。比如下面的打印结果所示:第22页在打印模板中设置图章的过程为:点击下面的图标打开图章设置对话框,如图所示:第23页图章打印是绝对定位的,所以需要设置图章绘制起始点的绝对位置(单位是像素),并可调整绘制的图片的长度宽度,另外,为避免图章层将文字覆盖,可设置图章的透明度;还有一个选项是设置图片的旋转角度,以使图章显示得更为真实。6.页面设置“页面设置”用于定义打印页的常规属性,比如打印页的纸型、页边距、页眉页脚页码的位置等。V5打印模块的页面设置包括了丰富的设置信息,包括三部分:1.纸型的选择:第24页在纸型下拉框中选择需要的纸型,选定纸型的长度和宽度会在文本框中显示出来,并可选择纸张的方向。在下部有一个复选框,它表示是否只显示当前打印机支持的纸型,如果不勾选,纸型下拉框中会显示市场上所有存在的纸型。推荐“只显示当前打印机支持的纸型”,因为如果选择了打印机不支持的纸型,打印机很难打出符合预期的效果。另外,在复选框右侧,有一个打印机图标,点击该按钮可以选择打印机,纸型下拉框会根据选定的打印机来获得当前可用的纸型。有些时候,客户有一些特殊的纸张,因此需要自定义纸型,产品支持两种自定义纸型的方式:在NC页面设置中定义,这可以通过选择纸型下拉框的最后一个选项“自定义纸张”来做到,如下图:第25页一旦选择了“自定义纸张”,宽度和高度文本框均可编辑,可在文本框中写下纸张的宽度和高度值。以后,每次打印此文档时,都会以此纸型打印。但需要注意的是,这并不意味着随意地定义一个纸型都可以交给打印机,前提必须是打印机支持这样的纸型。V5提供此功能,只是提高易用性。利用打印机驱动程序自定义纸型。方法是进入Windows系统的设置\控制面板\打印机,选定一个打印机后单击右键选择属性菜单,可进入打印机高级设置,在高级设置或打印首选项中(随打印机驱动程序而变化)一般可以自定义纸张,如下图所示,定义了新的纸张“lhwei”:第26页这个设置在本机可以被保存,适用于本机的所有应用程序。在NC的页面设置对话框,也可选择此纸张,如下图:第27页2.页边距设置在页边距页签中,可定义打印内容距纸张边缘上下左右的距离,以及页眉页脚距纸张边缘的距离,另外,为了用户装订方便,还可预留一段作为装订线区域,如下图:第28页3.页码设置:页码设置的用于定义页码的显示格式、位置等信息。如下图:第29页页码位置和格式的选项都很显然,不作解释,重要的是两个其他选项:其一是“横向信息”复选框,它的解释如上图界面中下侧的说明;另一个是起始页码主要是为页码加一个起始值,比如设置起始页码为10,那么打印的第一页的页码显示为10,第二页为11,依此类推。7.页码设置有两种设置页码的方法,方法一:在模板编辑器中点击菜单”设置\页面设置”对话框的”页码”选项卡直接添加页码,这是最方便添加页码的方式,详细地设置方式可参照“页面设置的具体作用”一节。方法二:有的时候,页码需要显示在文档的固定位置,比如放在表头。这种情况无法用方法一实现,为了满足这种需求,我们提供“当前页数”“总页数”系统变量,通过变量的组合自定义页码。比如我们给凭证一节的例子加上自定义页码,具体做法:拖拽系统变量中的“当前页数”“总页数”两个变量到模板中的凭证号单元格,然后双击此单元格弹出单元格内容编辑器,如下设置单元格内容:第30页此时模板变为:这时的预览效果如下:第31页第32页方法三:通过自定义变量。比如,我们建立一个自定义变量“自定义页码”,通过公式编辑器设置变量如下:在模板中使用这个自定义变量,便能达到和方法二同样的效果。有的时候,需要中文页码,比如“第壹页,共捌页”,这种情况无法用方法一和方法二实现,此时只能使用方法三,通过公式的嵌套来完成。修改上面“自定义页码”变量,加上_cnspace_公式,定义如下:第33页预览结果:第34页8.单元格变量的连接在实例的模板中,可以看到一个单元格若有多个变量,它们之间就用“&”符号连接起来。如果是字符串和变量连接,一定把字符串打上双引号,比如“总任务数:“&任务总计。此组合在...