您所在的位置:首页 > i医疗 > 科技前沿 > 技术标准 >  电子病历文本编辑器中文字断行及排版算法研究(6)
电子病历文本编辑器中文字断行及排版算法研究(6)
  • 2013-04-17 10:47
  • 作者:袁永福
  • 来源:中国数字医疗网

分页

分页本质上说就是计算分页线的位置。其过程如下:

1.首先计算出标准页的高度,也就是纸张高度减去上下页边距的值,还需要考虑到页眉页脚的修正量。

2.设置当前分页线的位置,也就是上一个分页线的位置加上标准页高。

3.遍历文档行,若分页线的位置在文档行中间,说明该行文字被分割到两页中,此时将分页线的位置向上移动,使得分页线在当前文档行的上边缘和上一个文档行下边缘的中间。

4.如此循环,使得所有的文档页的高度和大于等于文档的内容高度。

在进行分页时,也需要判断很多边界条件,比如当某个文档行非常高,比如中间放置了一个超高的图片,使得这个文档行的高度大于标准页高,此时就不能随便移动分页线的位置了。

另外当文档中有表格时,则需要深入到表格单元格内部进行修正分页线位置的操作,这是一种递归操作。

在电子病历业务中有着继续打印的功能,在笔者的实现中,续打位置实际上就算是一种特殊的分页线,这样就能避免在续打时文字被分割打印的情况。

文字断行和排版算法是非常复杂的,即使笔者经过长期的重构再重构,优化再优化,也还是花费了一万多行的C#代码来实现这个功能,而且还有不少地方仍然需要优化。

一些人认为C#无法开发高性能的程序,编辑器这样程序应该需要用C++开发。笔者经过实践认为,所谓C#性能不高的说法是不对的,关键还是算法。C#程序只是启动有些慢,运行起来后仍然可以达到很高的性能。

【责任编辑:well TEL:(010)68476606】

共6页: 上一页 [1][2][3][4][5]6 [查看全文]
标签:电子病历文本编辑器  中文字断行  排版算法  
  • 分享到: