客服转来一条反馈:用户上传的RTF文档在网页预览里打开,原本一二三级分明的列表编号全部变成了1,每一层都是1,像被重排过。用户第一反应是文件坏了,但同一份文件在自己电脑的Word里打开完全正常。这类问题在网站维护中并不少见,根源往往不在文字本身,而在RTF的列表结构经过转换后没有完整保留。
RTF是一种标记语言,列表编号不是逐字写进文本的,而是通过列表表、样式表和编号级别定义来描述。也就是说,编号是“算出来”的,不是“抄下来”的。一旦转换环节丢失或重算了这些定义,编号就会集体归位。核对时可以从四个层面逐层排查。
第一层看编号定义是否完整。RTF内部有一张列表表,记录每个列表的编号格式、起始值和级别关系,样式表再把列表挂到具体段落上。如果转换工具只读取了段落文本,忽略了列表表和样式表的关联,所有段落就会被当成同一个列表的同一级别,编号自然从1开始重复。核对方法是把原文件用支持RTF的编辑器打开,定位到列表段落,查看其样式是否带有列表标识,再对比转换后的结果是否保留了级别信息。
第二层看制表位与缩进。多级列表的视觉层次靠悬挂缩进和制表位撑起来,编号与正文之间的距离由这两个参数决定。有些转换流程会把缩进重算成统一值,导致编号看起来挤在一起,甚至被误判为同一级。核对时重点看每一级列表的左缩进、首行缩进和制表位数值,转换前后是否一致。
第三层看字体与符号。部分RTF列表使用符号字体来渲染项目符号或编号前缀,如果目标环境缺少该字体,符号会被替换成普通字符甚至空白,编号外观随之改变。核对时检查编号位置使用的字体名称,确认转换端和展示端是否都能正常调用。
第四层看转换链路。用户上传的RTF在网页展示前,往往要经过一次HTML或DOCX中转。中转环节如果采用“拍平”策略,把列表结构压成普通段落加手动编号,后续再想还原层级就无从下手。核对时向技术方确认转换路径,看中间格式是否保留了列表语义。
给维护人员一份五步自查清单:一是用原编辑器打开文件,确认列表级别和编号格式;二是转换前后各截一次图,逐段对比;三是抽查每一级列表的首个编号,看起始值是否正确;四是检查编号所用字体在展示端是否存在;五是修改转换参数后做一次回归验证,确认其他文档不受影响。
责任边界也要说清楚。用户应保留原始RTF文件和上传记录,维护方应保留转换日志和中间产物,便于定位是哪一步丢了结构。具体处理方式以实际环境测试结果为准,不同转换工具的列表支持程度差异较大,不能一概而论。把这几层核对清楚,编号错乱就不再是玄学问题。







