公众号排版与通用 Markdown 导出
从理解,到动手实现。步骤、协议与可复制的示例,都在这份文档中。
更新日期:2026-09-19。平台专用选项仅保留 公众号排版;Markdown 统一生成静态文章。本说明由真实 .udoc 无损导出,顶部可下载原生源文件。
公众号用 HTML 还是 Markdown
公众号正文使用 HTML 富文本。 在 UniDoc 选择“复制公众号排版”,再粘贴到公众号后台的正文编辑区。剪贴板同时提供 text/html 和 text/plain,正文包含内联字号、行距、颜色、间距、代码和表格样式。
Markdown 是文章源格式,不是本功能向公众号直接上传的格式。“下载排版 HTML”用于保存、预览和复制,不等于公众号后台支持直接上传任意 .html 文件。本版本不调用微信素材接口、不创建草稿、不自动发布文章。
这种 HTML 富文本剪贴板方式可以在 doocs/md 复制实现 中核查;它的 导出准备流程 包括等待预览、整理内容与样式内联。UniDoc 本次未引入该项目源码或主题。
公众号排版操作
- 打开文档,让图表、图片和视频画面完成加载。
- 选择 文件 → 导出 → 公众号排版。入口会提示:动态内容转静态图片,图片公开托管到当前用户的 R2。
- 有图片或动态资源时,需要登录 OmniDoc 并具有云文件写入、读取和分享权限。文件仍存放在用户自己的 OmniDoc/R2 中。
- 准备完成后,查看文章预览和“资源与转换说明”。正文保持文本,动画、行情和沙盒画面变成图片。
- 点击 复制公众号排版,粘贴到公众号后台正文。剪贴板权限被拒绝时,可使用 下载排版 HTML 保存后手动复制正文。
- 在公众号后台确认图片转存成功,保存草稿,再检查手机预览和链接,然后按正常流程发布。
平台可能清洗 HTML、调整样式、限制外链或转存图片。本地预览不能替代公众号后台保存后的验收;当前未完成真实公众号账户的粘贴、草稿重开与手机预览验收。
通用 Markdown 操作
选择 文件 → 导出 → Markdown,准备完成后点击 下载 Markdown。原有 Markdown 快捷入口也使用同一流程,不再区分平台专用 Markdown。
| 内容 | 文章输出 |
|---|---|
| 标题、段落、加粗、引用、列表、代码 | 保留可编辑的 Markdown 语义 |
| 本地、内嵌、远程图片 | 读取真实字节,转静态 PNG,托管到当前用户的 R2 |
| Canvas、动画、行情、沙盒 HTML | 采集当前画面,生成高清 PNG,附静态快照时间 |
| 自由 HTML 文本框 | 保留可读取的画面,按高度拆成连续图片,避免原来被遗漏 |
| 数学公式 | 渲染为 PNG,保留公式源作为图片说明 |
| 简单表格 | 转为 Markdown 表格 |
| 合并单元格表格 | 转静态图,避免合并跨度被悄悄丢弃 |
| 已加载且允许截图的视频 | 保留当前帧,文章中不能继续播放 |
| 浮动文本框 | 按页码和位置排列,接在正文后,不保留纸张坐标 |
普通图片最大宽度为 2400 像素;快照最高 2 倍比例、宽度最多 2400 像素。快照上限为宽 4096、高 16000、总面积 1800 万 CSS 像素,超限会要求拆分。长画面按高度生成连续图片,不直接截断尾部。
Markdown 不再依赖当前浏览器临时地址或登录 Cookie。它适合支持 Markdown 与 HTTPS 图片的平台,不能保证任何平台都接受所有图片外链、表格语法或排版。禁止外链图片的平台仍需转存图片。本版本不提供其他平台专用选项。
R2 图片地址与有效期
上传沿用现有 OmniDoc 用户文件流程:申请上传 → 浏览器直接 PUT 到 R2 → 服务端确认 → 所有者创建单文件公开分享。不会另建公共存储桶,也不会公开整个用户目录。
Markdown 中的地址形如:
https://app.unidoc.top/cloud/storage/share/asset/<公开分享令牌>.png这是单文件公开访问凭证,持地址者可读取该静态图片。访问时,UniDoc 校验令牌并向 OmniDoc 申请新的下载票据,再跳转到受信的 R2 地址。文件字节仍由 R2 提供;短期签名不会直接写进 Markdown。
它是可持续解析的地址,并非永久不可撤销。撤销分享、删除源文件或源服务不可用时,图片会失效。首次访问仍需经过 OmniDoc 票据服务,其耗时和可用性影响加载。
相同图片按内容哈希去重。本设备记录已确认上传的对象;分享失败后重试可复用对象,避免重复 PUT。重新使用分享时仍向服务端核对权限和有效性。切换账户或文档会停止导出,已完成的云文件不会自动删除。
管理与撤销
选择 文件 → 导出 → 管理导出图片,查看本设备当前账户的图片记录,点击 撤销公开地址。
撤销影响所有引用该地址的文章,不删除原 .udoc 或 R2 源图片。目标平台已转存的副本不受影响。本地记录清除或换设备后,请在 OmniDoc 云文件中管理对象;此窗口不是完整的跨设备云文件清单。
出错处理
- 要求登录或授权:完成 OmniDoc 登录和云文件权限授权后重试。纯文字文章不需要图片上传。
- 图片未加载、失效或读取被拒:修复原图片,或将图片文件嵌入文档后重试;不再导出“本地媒体未随导出”的占位文字。
- 外链网页、嵌套 iframe、Shadow DOM:浏览器隔离可能使画面无法读取,请先提供静态图。不会为截图解除沙盒隔离。
- 视频无画面或跨域画布受保护:先加载视频,或提供静态封面。无法截图时明确失败,不用黑图冒充成功。
- 文件附件:先用云内容分享生成附件链接,再写入正文;不把任意附件伪装成图片。
- 图表还在等待数据:先等待加载完成再导出。快照仅记录当前画面,数值不再实时变化。
- 部分图片已上传,但后续失败:到管理窗口查看记录,按需重试或撤销已公开地址。
浏览器 API 与纯 HTTP 的边界
浏览器 window.unidoc2md 和 window.UniDocConverters.unidoc2md 使用同一静态文章流程。输入 .udoc 时重建隔离 HTML 画面,不把它替换成当前编辑文档。图片发布需要当前用户授权;重建画面属于初始运行状态,不恢复此前未保存的游戏进度。
const markdown = await window.UniDocConverters.unidoc2md(await file.arrayBuffer());POST /convert/unidoc2md 是无浏览器画面的字节转换服务:纯文字和已经准备好的静态图引用可以转换;需要截图或托管图片时返回 422 portable_media_requires_browser,请改用上述浏览器接口。该端点不再输出失效的本地图片引用或遗漏动态块。它尚不具备任意网页截图与用户云托管的全自动服务端转换能力。
空白文档入口
从 空白入口 打开完整编辑器和一张空白页:
https://app.unidoc.top/?blank=1
https://app.unidoc.top/?blank=1&view=flowblank=1 是精确开关。普通入口继续打开灵感实验室。登录前草稿、分享文档和明确指定的导入或模板仍优先;空白入口不自动恢复上次 Vault。直接刷新会新建空白页,请先保存编辑内容。组合规则见 内嵌接入指南。