打印模板需要一定的html知识,一些最基础的标签使用方法。模板使用的是部分html标签,不需要将完整的html、head、body等写完整。最外层必须是
<div id="tempContent" style="height: 50mm; width: 100mm; background: rgb(255, 255, 255); margin: 0 auto; overflow: hidden; position: relative;">
</div>
这些标签会在新建时自动生成,请不要删除它们,否则可能会引起打印异常。
内部的内容可以使用两种模式,设计模式和源码模式:
设计模式可以直接使用左侧的控件,点击控件后设计器上会有一个虚线框出现,点击这个虚线框后在右侧的控件属性Tab下会有控件可设置的属性。
文本和字段的属性包括标题、字体、字体大小、颜色、对其方式等,其中标题可以用<p>{{字段}}</p> 或者<span>{{字段}}</span>的形式动态表示字段的名称,系统会自动替换成对应内容。
某些图片可能由于格式问题不能被打印出来,请尽量使用标准格式的软件进行图片编辑,千万不能更改图片后缀名
表格包括数据源名称、边框、背景、大小等,可以点击新增数据列,其中数据源名称使用传递的列表名称即可。
源码模式则会将模板的源代码展示出来,您可以根据自己的需求定义html标签和样式,您可以在源码和设计器之间无缝切换,两边的内容会自动同步。注意模板不支持引入任何Javascript脚本或者CSS样式表,这些内容即使在页面中可以呈现或者使用,但在打印时是完全不可用的,甚至会引起打印失败。
字段类型使用:分隔表示格式化字符串,例如{{CreateTime:yyyyMMdd}} {{Quantity:#.##}},格式化字符串详见下文所述。
表格中的字段名称也可以使用:分隔表示格式化字符串,例如CreateTime:yyyyMMdd Quantity:#.##,格式化字符串详见下文所述。
打印内容中可以使用数学公式。
普通属性中可以直接以“=”开头表示接下去的字段需要使用数学公式,例如“={{字段1}}+{{字段2}}”。
表格中的列也可以使用以“=”开头的计算公式,但需要在打印对象中预先设置,例如字段“=Query('Basic_Material.Name','Code={{MaterialCode}}')”。
注意格式化字符串依然可以使用,其会在计算前完成格式化,例如“={{字段1:#.##}}+{{字段2}}”,表示先将字段1四舍五入成两位小数的浮点数,再与字段2进行相加。
公式支持普通加减乘除的数学公式,也支持一些简单的数学函数调用,例如:=Round({{字段2}}, 2), =Pow({{字段2}}, 2) 等, 目前支持的有:
方法名 | 描述 | 用法 | 结果 |
---|---|---|---|
Query | 返回指定数据表的字符串。 | Query('Sys_User.Name', 'Code={{EmpCode}}') | 张三 |
Substring | 返回指定位置的子字符串。 | Substring('Hello', 0, 2) | He |
Contain | 返回是否存在子字符串。 | Contain('Hello', 'el') | true |
StartsWith | 返回是否以指定字符串开头。 | StartsWith('Hello', 'ok') | false |
EndsWith | 返回是否以指定字符串结尾。 | EndsWith('Hello', 'lo') | true |
IndexOf | 返回其在字符串中的起始位置索引。 | IndexOf('Hello', 'e') | 1 |
Replace | 替换字符串中的指定字符。 | Replace('Hello', 'll', 'kk') | Hekko |
Split | 分隔字符串。 | Split('Hello world', ' ', 1) | world |
Abs | 返回指定数字的绝对值。 | Abs(-1) | 1M |
Acos | 返回余弦为指定数值的角度。 | Acos(1) | 0d |
Asin | 返回正弦值为指定数字的角度。 | Asin(0) | 0d |
Atan | 返回其正切值为指定数字的角度。 | Atan(0) | 0d |
Ceiling | 返回大于或等于指定数字的最小整数。 | Ceiling(1.5) | 2d |
Cos | 返回指定角度的余弦值。 | Cos(0) | 1d |
Exp | 返回 e 提高到指定的幂。 | Exp(0) | 1d |
Floor | 返回小于或等于指定数字的最大整数。 | Floor(1.5) | 1d |
IEEERemainder | 返回将一个指定数字除以另一个指定数字所得到的余数。 | IEEERemainder(3, 2) | -1d |
Log | 返回指定数字的对数。 | Log(1, 10) | 0d |
Log10 | 返回指定数字的以 10 为底的对数。 | Log10(1) | 0d |
Max | 返回两个数字中较大的一个。 | Max(1, 2) | 2 |
Min | 返回两个数字中较小的一个。 | Min(1, 2) | 1 |
Pow | 返回提高到指定幂的指定数字。 | Pow(3, 2) | 9d |
Round | 将值四舍五入到最接近的整数或指定的小数位数。 | Round(3.222, 2) | 3.22d |
Sign | 返回一个值,该值指示数字的符号。 | Sign(-10) | -1 |
Sin | 返回指定角度的正弦值。 | Sin(0) | 0d |
Sqrt | 返回指定数字的平方根。 | Sqrt(4) | 2d |
Tan | 返回指定角度的正切值。 | Tan(0) | 0d |
Truncate | 计算数字的整数部分。 | Truncate(1.7) | 1 |
in | 返回元素是否在集合中 | in(1 + 1, 1, 2, 3) | true |
if | 根据条件返回值 | if(3 % 2 = 1, 'value is true', 'value is false') | 'value is true' |
字段类型使用:分隔表示格式化字符串,例如{{CreateTime:yyyyMMdd}},格式化字符串详见下文所述。
下表描述了自定义日期和时间格式说明符,并显示了由每个格式说明符生成的结果字符串。 默认情况下,结果字符串反映 zh-cn 区域性的格式设置约定。 如果特定格式说明符生成本地化结果字符串,则该示例还注明结果字符串适用的区域性。 有关使用自定义日期和时间格式字符串的详细信息,请参阅备注部分。
格式说明符 | 描述 | 示例 |
---|---|---|
"d" | 一个月中的某一天(1 到 31)。 | 2009-06-01T13:45:30 -> 1 2009-06-15T13:45:30 -> 15 |
“dd” | 一个月中的某一天(01 到 31)。 | 2009-06-01T13:45:30 -> 01 2009-06-15T13:45:30 -> 15 |
“ddd” | 一周中某天的缩写名称。 | 2009-06-15T13:45:30 -> Mon (en-US) 2009-06-15T13:45:30 -> Пн (ru-RU) 2009-06-15T13:45:30 -> lun. (fr-FR) |
“dddd” | 一周中某天的完整名称。 | 2009-06-15T13:45:30 -> Monday (en-US) 2009-06-15T13:45:30 -> понедельник (ru-RU) 2009-06-15T13:45:30 -> lundi (fr-FR) |
“f” | 日期和时间值的十分之几秒。 | 2009-06-15T13:45:30.6170000 -> 6 2009-06-15T13:45:30.05 -> 0 |
“ff” | 日期和时间值的百分之几秒。 | 2009-06-15T13:45:30.6170000 -> 61 2009-06-15T13:45:30.0050000 -> 00 |
“fff” | 日期和时间值的千分之几秒。 | 6/15/2009 13:45:30.617 -> 617 6/15/2009 13:45:30.0005 -> 000 |
“ffff” | 日期和时间值的万分之几秒。 | 2009-06-15T13:45:30.6175000 -> 6175 2009-06-15T13:45:30.0000500 -> 0000 |
“fffff” | 日期和时间值的十万分之几秒。 | 2009-06-15T13:45:30.6175400 -> 61754 6/15/2009 13:45:30.000005 -> 00000 |
“ffffff” | 日期和时间值的百万分之几秒。 | 2009-06-15T13:45:30.6175420 -> 617542 2009-06-15T13:45:30.0000005 -> 000000 |
“fffffff” | 日期和时间值的千万分之几秒。 | 2009-06-15T13:45:30.6175425 -> 6175425 2009-06-15T13:45:30.0001150 -> 0001150 |
“F” | 如果非零,则为日期和时间值的十分之几秒。 | 2009-06-15T13:45:30.6170000 -> 6 2009-06-15T13:45:30.0500000 ->(无输出) |
“FF” | 如果非零,则为日期和时间值的百分之几秒。 | 2009-06-15T13:45:30.6170000 -> 61 2009-06-15T13:45:30.0050000 ->(无输出) |
“FFF” | 如果非零,则为日期和时间值的千分之几秒。 | 2009-06-15T13:45:30.6170000 -> 617 2009-06-15T13:45:30.0005000 ->(无输出) |
“FFFF” | 如果非零,则为日期和时间值的万分之几秒。 | 2009-06-15T13:45:30.5275000 -> 5275 2009-06-15T13:45:30.0000500 ->(无输出) |
“FFFFF” | 如果非零,则为日期和时间值的十万分之几秒。 | 2009-06-15T13:45:30.6175400 -> 61754 2009-06-15T13:45:30.0000050 ->(无输出) |
“FFFFFF” | 如果非零,则为日期和时间值的百万分之几秒。 | 2009-06-15T13:45:30.6175420 -> 617542 2009-06-15T13:45:30.0000005 ->(无输出) |
“FFFFFFF” | 如果非零,则为日期和时间值的千万分之几秒。 | 2009-06-15T13:45:30.6175425 -> 6175425 2009-06-15T13:45:30.0001150 -> 000115 |
“g”、“gg” | 时期或纪元。 | 2009-06-15T13:45:30.6170000 -> A.D. |
“h” | 采用 12 小时制的小时(从 1 到 12)。 | 2009-06-15T01:45:30 -> 1 2009-06-15T13:45:30 -> 1 |
“hh” | 采用 12 小时制的小时(从 01 到 12)。 | 2009-06-15T01:45:30 -> 01 2009-06-15T13:45:30 -> 01 |
“H” | 采用 24 小时制的小时(从 0 到 23)。 | 2009-06-15T01:45:30 -> 1 2009-06-15T13:45:30 -> 13 |
“HH” | 采用 24 小时制的小时(从 00 到 23)。 | 2009-06-15T01:45:30 -> 01 2009-06-15T13:45:30 -> 13 |
“K” | 时区信息。 | 带 DateTime 值: 2009-06-15T13:45:30, Kind Unspecified -> 2009-06-15T13:45:30, Kind Utc -> Z 2009-06-15T13:45:30, Kind Local -> -07:00(取决于本地计算机的设置) 带 DateTimeOffset 值: 2009-06-15T01:45:30-07:00 --> -07:00 2009-06-15T08:45:30+00:00 --> +00:00 |
“m” | 分钟(0 到 59)。 | 2009-06-15T01:09:30 -> 9 2009-06-15T13:29:30 -> 29 |
“mm” | 分钟(00 到 59)。 | 2009-06-15T01:09:30 -> 09 2009-06-15T01:45:30 -> 45 |
“M” | 月份(1 到 12)。 | 2009-06-15T13:45:30 -> 6 |
“MM” | 月份(1 到 12)。 | 2009-06-15T13:45:30 -> 06 |
“MMM” | 月份的缩写名称。 | 2009-06-15T13:45:30 -> Jun (en-US) 2009-06-15T13:45:30 -> juin (fr-FR) 2009-06-15T13:45:30 -> Jun (zu-ZA) |
“MMMM” | 月份的完整名称。 | 2009-06-15T13:45:30 -> June (en-US) 2009-06-15T13:45:30 -> juni (da-DK) 2009-06-15T13:45:30 -> uJuni (zu-ZA) |
“s” | 秒(0 到 59)。 | 2009-06-15T13:45:09 -> 9 |
“ss” | 秒(00 到 59)。 | 2009-06-15T13:45:09 -> 09 |
“t” | AM/PM 指示符的第一个字符。 | 2009-06-15T13:45:30 -> P (en-US) 2009-06-15T13:45:30 -> (fr-FR) |
“tt” | AM/PM 指示符。 | 2009-06-15T13:45:30 -> PM (en-US) 2009-06-15T13:45:30 -> (fr-FR) |
“y” | 年份(0 到 99)。 | 0001-01-01T00:00:00 -> 1 0900-01-01T00:00:00 -> 0 1900-01-01T00:00:00 -> 0 2009-06-15T13:45:30 -> 9 2019-06-15T13:45:30 -> 19 |
“yy” | 年份(00 到 99)。 | 0001-01-01T00:00:00 -> 01 0900-01-01T00:00:00 -> 00 1900-01-01T00:00:00 -> 00 2019-06-15T13:45:30 -> 19 |
“yyy” | 年份(最少三位数字)。 | 0001-01-01T00:00:00 -> 001 0900-01-01T00:00:00 -> 900 1900-01-01T00:00:00 -> 1900 2009-06-15T13:45:30 -> 2009 |
“yyyy” | 由四位数字表示的年份。 | 0001-01-01T00:00:00 -> 0001 0900-01-01T00:00:00 -> 0900 1900-01-01T00:00:00 -> 1900 2009-06-15T13:45:30 -> 2009 |
“yyyyy” | 由五位数字表示的年份。 | 0001-01-01T00:00:00 -> 00001 2009-06-15T13:45:30 -> 02009 |
“z” | 相对于 UTC 的小时偏移量,无前导零。 | 2009-06-15T13:45:30-07:00 -> -7 |
“zz” | 相对于 UTC 的小时偏移量,带有表示一位数值的前导零。 | 2009-06-15T13:45:30-07:00 -> -07 |
“zzz” | 相对于 UTC 的小时和分钟偏移量。 | 2009-06-15T13:45:30-07:00 -> -07:00 |
":" | 时间分隔符。 | 2009-06-15T13:45:30 -> : (en-US) 2009-06-15T13:45:30 -> . (it-IT) |
"/" | 日期分隔符。 | 2009-06-15T13:45:30 -> / (en-US) 2009-06-15T13:45:30 -> - (ar-DZ) 2009-06-15T13:45:30 -> . (tr-TR) |
"string" 'string' | 文本字符串分隔符。 | 2009-06-15T13:45:30 ("arr:" h:m t) -> arr: 1:45 P 2009-06-15T13:45:30 ('arr:' h:m t) -> arr: 1:45 P |
% | 将下面的字符定义为自定义格式说明符。 | 2009-06-15T13:45:30 (%h) -> 1 |
\ | 转义字符。 | 2009-06-15T13:45:30 (h \h) -> 1 h |
任何其他字符 | 字符将复制到未更改的结果字符串。 | 2009-06-15T01:45:30 (arr hh:mm t) -> arr 01:45 A |
格式说明符 | 属性 | 说明 | 示例 |
---|---|---|---|
“0” | 零占位符 | 用对应的数字(如果存在)替换零;否则,将在结果字符串中显示零。 | 1234.5678 ("00000") -> 01235 0.45678 ("0.00", en-US) -> 0.46 0.45678 ("0.00", fr-FR) -> 0,46 |
"#" | 数字占位符 | 用对应的数字(如果存在)替换“#”符号;否则,不会在结果字符串中显示任何数字。 请注意,如果输入字符串中的相应数字是无意义的 0,则在结果字符串中不会出现任何数字。 例如,0003 ("####") -> 3。 | 1234.5678 ("#####") -> 1235 0.45678 ("#.##", en-US) -> .46 0.45678 ("#.##", fr-FR) -> ,46 |
"." | 小数点 | 确定小数点分隔符在结果字符串中的位置。 | 0.45678 ("0.00", en-US) -> 0.46 0.45678 ("0.00", fr-FR) -> 0,46 |
"," | 组分隔符和数字比例换算 | 用作组分隔符和数字比例换算说明符。 作为组分隔符时,它在各个组之间插入本地化的组分隔符字符。 作为数字比例换算说明符,对于每个指定的逗号,它将数字除以 1000。 | 组分隔符说明符: 2147483647 ("##,#", en-US) -> 2,147,483,647 2147483647 ("##,#", es-ES) -> 2.147.483.647 比例换算说明符: 2147483647 ("#,#,,", en-US) -> 2,147 2147483647 ("#,#,,", es-ES) -> 2.147 |
"%" | 百分比占位符 | 将数字乘以 100,并在结果字符串中插入本地化的百分比符号。 | 0.3697 ("%#0.00", en-US) -> %36.97 0.3697 ("%#0.00", el-GR) -> %36,97 0.3697 ("##.0 %", en-US) -> 37.0 % 0.3697 ("##.0 %", el-GR) -> 37,0 % |
"‰" | 千分比占位符 | 将数字乘以 1000,并在结果字符串中插入本地化的千分比符号。 | 0.03697 ("#0.00‰", en-US) -> 36.97‰ 0.03697 ("#0.00‰", ru-RU) -> 36,97‰ |
“E0” “E+0” “E-0” “E0” “E+0” “E-0” | 指数表示法 | 如果后跟至少一个 0(零),则使用指数表示法设置结果格式。 “E”或“e”指示指数符号在结果字符串中是大写还是小写。 跟在“E”或“e”字符后面的零的数目确定指数中的最小位数。 加号 (+) 指示符号字符总是置于指数前面。 减号 (-) 指示符号字符仅置于负指数前面。 | 987654 ("#0.0e0") -> 98.8e4 1503.92311 ("0.0##e+00") -> 1.504e+03 1.8901385E-16 ("0.0e+00") -> 1.9e-16 |
"\" | 转义符 | 使下一个字符被解释为文本而不是自定义格式说明符。 | 987654 ("\###00\#") -> #987654# |
'string' "string" | 文本字符串分隔符 | 指示应复制到未更改的结果字符串的封闭字符。 | 68 ("# 'degrees'") -> 68 degrees 68 ("#' degrees'") -> 68 degrees |
; | 部分分隔符 | 通过分隔格式字符串定义正数、负数和零各部分。 | 12.345 ("#0.0#;(#0.0#);-\0-") -> 12.35 0 ("#0.0#;(#0.0#);-\0-") -> -0- -12.345 ("#0.0#;(#0.0#);-\0-") -> (12.35) 12.345 ("#0.0#;(#0.0#)") -> 12.35 0 ("#0.0#;(#0.0#)") -> 0.0 -12.345 ("#0.0#;(#0.0#)") -> (12.35) |
其他 | 所有其他字符 | 字符将复制到未更改的结果字符串。 | 68 ("# °") -> 68 ° |