知行札记
专题数据与信息系统文档表示、编辑与转换

保存、格式转换与信息保留

连接编辑状态、持久版本和格式能力,说明丢失、恢复与资源处理。

保存需要定义完成

编辑器状态改变、保存任务排队、服务器接收、持久化提交和其他设备读取,分别表示不同阶段。界面应让使用者知道最后成功保存的版本,失败时保留尚未保存的内容和恢复入口。

自动保存可以合并密集输入,但必须处理旧请求晚于新请求完成的问题。版本条件、序列号或明确的服务端排序,能够防止旧状态覆盖新状态。页面卸载不保证异步请求一定完成,可靠保存需要平时维护状态和补偿途径。

格式转换是映射

转换器把一种格式的对象映射到另一种格式的对象。双方共有的段落、标题或图片通常比较直接,表格布局、批注、脚注、公式和扩展节点可能需要额外规则。

转换必须说明 unsupported 内容如何处理:报错、保留源片段、降级为文本或忽略。静默忽略会让“成功生成文件”与“信息完整保留”产生差距。往返转换还要检查身份、属性、顺序和资源是否仍有原义。

语义结构与页面布局

Markdown 侧重文本结构,HTML 还表达页面内容与样式,DOCX 包含复杂文档结构与排版规则,PDF 主要保存页面呈现。将 PDF 提取成文本通常无法自动恢复完整编辑树;将截图放入 PDF 可以保留部分外观,却不等价于保留可选择文本和语义结构。

先确定任务是读取文本、保存外观、继续编辑还是交换结构,再选择转换路径。格式扩展名本身不足以判断保真程度。

资源与不可信输入

文档中的图片、字体和链接可能来自外部地址。转换服务需要决定是否下载、保存到哪里、如何引用,以及怎样处理失败和权限。服务器抓取外部资源还需要限制网络目标,避免将任意输入变成内部网络访问。

导入 HTML 或 Office 文件要考虑脚本、宏、嵌入对象和超大输入。格式解析、消毒与渲染各承担不同边界;在一个阶段转成安全文本后,后续重新拼成 HTML 时还需要对应编码。

评价转换与保存

检查可以同时包含结构结果、资源完整性和显示结果。结构断言不能证明排版完好,视觉一致也不能证明文字和语义保留。样本应包括会影响采用的节点、长文、非 ASCII 字符、失败资源和版本变化。

ProseMirror 原项目的 Document guide与 Schema guide说明模型和序列化接口;Markdown 原始规范见 CommonMark。本页没有承诺任意格式无损互转。

最后更新于

本页目录