1. 03. 文件预览
石墨文档中台-开发文档
  • 1. 适用范围
  • 00. 概述
    • 石墨文档中台能做什么?
    • 三种典型的业务接入场景
    • 石墨文档中台支持哪些格式?
  • 01. 快速开始
    • 基本概念
    • 场景一:10 分钟创建预览文件
    • 场景二:10 分钟创建协同编辑文件
  • 02. 鉴权与安全
    • 整体概述
    • 签名凭证 Token
    • 签名凭证 Signature
  • 03. 文件预览
    • 整体概述
    • 如何预热预览缓存
    • 如何防盗链
    • 常见问题处理
  • 04. 文件编辑
    • 整体概述
    • 协同文档权限设计
    • 协同文件保存与更新机制
    • 协同文件复制与删除
  • 05. 文件导入导出
    • 整体概述
    • 常见问题处理
  • 06. 石墨前端 API
    • 整体概述
    • 公共 API
      • 公共处理方法
      • 顶部栏定制 HeaderBars
    • 编辑器 API
      • 轻文档
      • 传统文档
      • 表格
      • 幻灯片
      • 表单
      • 应用表格
  • 07. 石墨后端 API
    • 整体概述
    • 错误码说明
    • 文件-预览 API
      • 访问预览文件
      • 创建文件预览缓存
    • 文件-协同编辑文件管理 API
      • 访问协同编辑文件
      • 创建协同文件
      • 创建协同文件副本
      • 删除协同文件
    • 文件-导入导出 API
      • 文件导入
        • 文件导入说明
        • 创建导入任务
        • 获取导入进度
        • 创建导入任务(旧版)
        • 获取导入进度(旧版)
      • 文件导出
        • 文件导出流程
        • 创建导出任务
        • 获取导出进度
    • 文件-表格文件(Excel) API
      • 表格接口参数说明
      • 获取表格内容
      • 获取表格中的评论数
      • 更新表格内容
      • 追加表格内容
      • 删除表格行
      • 新增表格工作表
    • 文件-文稿文件(Word) API
      • 文稿书签说明
      • 读取文稿书签内容
      • 替换文稿书签内容
    • 文件-文档文件(类 Markdown) API
      • 获取文档中的评论列表
    • 文件-应用表格文件(多维表格)API
      • 应用表格列及单元格值结构
      • 应用表格接口调用规则
      • 获取数据表列表
      • 创建数据表
      • 获取字段列表
      • 创建字段
      • 更新字段
      • 删除字段
      • 新增行
      • 获取单行
      • 更新行
      • 删除行
    • 文件-获取额外信息 API
      • 获取文件的纯文本内容
      • 文件纯文本字数统计
      • 获取文件的历史列表
      • 获取文件的版本列表
      • 获取文件内容中所有的 @ 人信息列表
      • 还原文件历史版本
    • 系统管理 API
      • 应用管理
        • 获取应用详情
        • 更新应用回调地址
      • 用户席位管理
        • 用户席位状态说明
        • 获取用户列表和席位状态
        • 激活用户席位​
        • 取消用户席位​
        • 批量设置用户席位
    • 其他 API
      • 上报事件
      • 创建行为历史
      • 推送文件内全部的用户
      • 推送用户全部的 websocket 连接
    • 获取行列表
  • 08. 回调接口(你的应用需实现的接口)
    • 整体概述
    • 文件信息
      • 文件权限说明
      • [重要] 获取文件元信息-协同文档
      • [重要] 获取文件元信息-预览文档
      • 获取当前用户的文件列表
      • 获取文件的协作者列表
      • 获取接入方指定文件的完整访问地址
      • 获取文件元信息-协同文档自动任务(admin)
      • 根据指定用户获取文件元信息-协同文档(admin)
    • 用户信息
      • 批量获取用户信息(admin)
      • [重要] 获取当前用户信息
      • 获取当前用户所在团队信息
      • 获取指定用户信息
      • 获取用户水印信息
      • 获取用户部门路径
      • 批量获取用户信息
    • 团队和部门
      • 特殊部门 ID 说明
      • 获取团队下的成员列表
      • 获取部门信息
      • 获取部门的下级部门节点
      • 获取部门下的成员分页列表
    • 搜索功能
      • 获取与文件相关的用户列表
      • 获取与文件相关的文件列表
      • 按关键字搜索文件和用户列表
    • 事件推送
      • 整体概述
      • 评论(Comment)
        • 轻文档
          • 添加评论
          • 删除评论
          • 结束评论
          • 对于评论的回复评论
        • 表格
          • 添加评论
          • 删除评论
          • 结束评论
          • 对于评论的回复评论
        • 传统文档
          • 对于评论的回复评论
          • 添加评论
          • 更新评论
          • 删除评论
        • 幻灯片
          • 添加评论
          • 删除评论
          • 结束评论
          • 对于评论的回复评论
        • 应用表格
          • 添加评论
          • 对于评论的回复评论
          • 删除评论
      • 讨论(Discussion)
        • 轻文档
          • 发送讨论消息
      • 提及(MentionAt @ 人)
        • 轻文档
          • 在评论中 at
          • 在讨论中 at
          • 在正文中 at
        • 表格
          • 在评论中 at
          • 在正文中 at
        • 传统文档
          • 在评论中 at
          • 在正文中 at
        • 应用表格
          • 在评论中 at
          • 在正文中 at
      • 日期提醒 (DateMention)
        • 轻文档
          • 创建
          • 修改
          • 删除
        • 表格
          • 创建
          • 修改
          • 删除
        • 传统文档
          • 创建
          • 修改
          • 删除
      • 文件内容更新 (FileContent)
        • 文件内容更新
      • 文档协作者协同状态变化 (Collaborator)
        • 文档协作者协同状态变化
      • 文件版本 (Revision)
        • 版本
      • 系统事件 (System)
        • 系统事件
      • 回调请求错误(实验性)
        • 回调请求错误
  • 09. 核心模型
    • 你的应用如何设计应用(app)模型?
    • 你的应用如何设计文件数据模型?
    • 你的应用如何设计通讯录模型?
    • 你的应用系统如何设计文件权限模型?
  • 10. 典型场景方案
    • 云盘场景
    • IM 场景
    • 示例代码仓库
  • 11. 常见问题
    • 访问接口提示 Signature
    • 文件预览或导入报错
    • 首次接入 SDK 报错
    • 文档预览如何做防盗链
    • 复制粘贴、全屏操作不正常
    • 如何实现文档模板功能
    • 文档内容何时保存
    • 移动端不支持 blob 协议导致预览失败
    • 如何实现文件重命名
    • 如何通过接口修改文档内容
    • @人员时如何直接跳转至对应锚点
  1. 03. 文件预览

整体概述

一、文件预览说明#

石墨文档中台的文件预览,本质上是把第三方业务系统里的 Office/PDF/图片等实体文件,通过一个受控的在线预览页面展示给用户。你的应用继续负责文件存储、用户身份、权限判断和下载地址管理;石墨文档中台负责在用户打开预览页时,通过回调接口实时获取必要信息,下载文件,解析生成预览内容,并把渲染页面返回给前端。
因此,文件预览接入不是把文件提前同步到石墨,也不是把你的应用文件系统改造成石墨文件系统,而是通过“前端嵌入 + 后端回调 + 预览解析服务”的方式完成解耦。

二、三个核心要素#

要素由谁提供作用
应用与凭证你的应用在石墨文档中台侧配置标识接入应用,生成访问预览页所需的 signature、token 等凭证
回调接口你的应用后端向石墨实时返回当前用户信息、文件元信息、权限、下载地址等数据
预览页面你的应用前端 + 石墨预览服务前端用 iframe 或 SDK 嵌入预览地址,石墨负责文件解析和页面渲染
这三个要素里,最关键的是回调服务。石墨文档中台采用无状态集成思路,不长期保存你的应用的用户、文件和权限数据;当预览链路需要这些信息时,石墨服务端会回调你的应用后端实时获取。

三、角色分工#

角色职责
用户打开业务系统页面,加载石墨预览 iframe
你的应用前端拼接或获取预览 URL,把预览页嵌入业务系统
你的应用后端生成 fileId、维护文件元信息、校验用户身份、暴露回调接口和文件下载地址
石墨文档中台校验访问凭证,回调你的应用获取用户和文件信息,下载源文件,创建或读取预览缓存,返回预览页面

四、架构示意图#

下面的架构图对应文件预览场景。你的应用前端负责嵌入预览页面,你的应用后端负责实现回调接口,石墨文档中台服务负责解析并渲染预览内容。

五、预览链路#

5.1 文件预览地址#

预览文档不需要像协同文档那样先调用“创建协同文件”接口。你的应用准备好 fileId、signature 和 token 后,按照如下的格式拼接后,前端直接打开预览页即可。
https://__石墨文档中台域名__/sdk/v2/api/cloud-files/{fileId}/page?signature={signature}&token={token}
也可以在业务页面中用 iframe 嵌入:

5.2 石墨文档中台何时请求回调接口#

石墨文档中台不直接存储你的应用的业务文件列表数据、权限数据。它只依赖约定好的回调接口:
1.
用户打开预览页时,石墨回调“当前用户信息接口”,你的应用根据 X-WebOffice-Token 等凭证识别用户。
2.
石墨回调“文件元信息接口”,你的应用返回该 fileId 对应的文件标题、文件类型、可读权限、下载地址和扩展名。
3.
石墨通过 downloadUrl 拉取源文件并解析。
典型的文件元信息返回如下:
{
  "id": "my-preview-file-a1b2c3",
  "name": "示例文档.docx",
  "type": "file",
  "permissions": {
    "readable": true
  },
  "downloadUrl": "https://example.com/download/my-preview-file-a1b2c3.docx",
  "ext": "docx"
}
这里的 type 固定表示第三方文件类型,permissions.readable 决定当前用户是否可读,downloadUrl 是石墨服务端拉取源文件的地址,ext 用于在下载响应头不足以识别文件类型时明确告诉石墨文件扩展名。
需要注意的是,预览缓存和 fileId 强相关。同一个 fileId 已经生成预览缓存后,即使你的应用修改 downloadUrl 指向的新文件内容,也不应期待原预览结果自动变化。需要展示新内容时,应生成新的 fileId,让石墨重新创建预览缓存。

六、与协同文件的区别#

文件预览协同文件
文件来源你的应用已有的第三方文件,例如 .docx、.xlsx、.pptx、.pdf石墨在线文件类型
是否可编辑不可编辑,仅预览支持在线编辑和多人协同
是否需要创建文档不需要创建协同文档,直接用 fileId 访问预览页通常需要创建或维护石墨协同文档
元信息返回type: "file",必须返回 downloadUrl 和 ext返回协同文档对应的类型与访问数据
内容更新方式新内容建议使用新 fileId 生成新缓存编辑内容由协同链路保存和同步

七、权限与安全要点#

1.
预览访问要以你的应用自己的用户身份和权限体系为准,石墨只通过回调接口获取判断结果。
2.
用户操作触发的回调通常携带 X-WebOffice-Token,你的应用应校验 token 格式、签名、过期时间和用户权限。
3.
系统主动触发的请求可能使用签名类凭证,你的应用应按 X-Shimo-Credential-Type 区分验证方式。
4.
downloadUrl 需要能被石墨服务端访问。如果使用内网、专线或对象存储临时 URL,需要保证有效期覆盖预览解析过程。
5.
不建议把长期有效、无鉴权的真实文件地址直接暴露为下载地址。可以使用短期签名 URL、一次性下载 URL 或带服务端鉴权的中转下载接口。

八、接入检查清单#

已在石墨文档中台侧完成应用配置,并能生成访问预览页需要的凭证。
你的应用后端能生成全局唯一且稳定的 fileId。
已实现当前用户信息接口。
已实现文件元信息接口,并返回 id、name、type、permissions、downloadUrl、ext。
downloadUrl 可被石墨服务端访问,且响应头或 ext 能明确标识文件类型。
业务权限变化能实时反映到回调接口返回值。
首次打开体验有要求时,已考虑提前创建预览缓存。
文件内容更新时,已明确是否生成新的 fileId。
已记录预览任务错误码、回调日志、下载日志,便于定位问题。

九、小结#

石墨文件预览的关键设计,是把“文件在哪里、谁能看、如何下载”留在你的应用系统,把“如何解析、如何渲染、如何在线展示”交给石墨文档中台。接入时只要把前端预览入口、后端回调接口、文件下载链路和权限校验打通,就可以在不迁移原始文件存储的前提下,为业务系统补上在线预览能力。
修改于 2026-06-22 02:43:30
上一页
签名凭证 Signature
下一页
如何预热预览缓存
Built with