我们在某些ECC系统中使用smartforms打印时,会发现有时候一个单元格里字符串一行没打印完就折行了,好像只要有“-”这种连字符就会发生这个问题,那如何才能解决这个问题呢?
1.首先,我们弄清楚打印输出的原理。
如上图所示,每一个字符的“宽度”加起来,小于等于这个单元格的“宽度”,就能放到一行上。
那么这里说到一个“宽度”,对于单元格而言,单元格的外在宽度会有不同的单位,比如:CM、MM、IN等,那么势必是要转换到内部的一个宽度标准上对吧
对于文字、符号的宽度,因为受到很多因素影响,比如:字体字号、打印机输出属性设置等,在此我们就不做解释字符宽度是怎么计算出来的。
但有一点还是需要说明,汉字在SAP里是一个字符位,但是输出是2个字符位。所以计算的时候,是需要先根据每个指针偏移来计算占的字符位,然后才乘以1个字符位的长度得到这个偏移位字符的宽度
例如目的中的截图,我们看“暖”,由于是汉字,因此得知他占2个字符位,而smartforms默认不修改字体字号等情况下,一个字符位的宽度大概是144,所以这个字占位是288,图中单元格设置的是4CM宽,换算内部宽度也就是2268,这样一行能放多少是不是就能算出来了?
2.这样说比较抽象,我们到标准代码里具体看吧。