UniDoc说明中心下载 .udoc
UNIDOC / KNOWLEDGE IN MOTION

公众号排版与通用 Markdown 导出

从理解,到动手实现。步骤、协议与可复制的示例,都在这份文档中。

更新日期:2026-09-20。平台专用选项为 微信公众号排版,提供“保留原样”和“文章阅读”;Markdown 统一生成静态文章。本说明由真实 .udoc 无损导出,顶部可下载原生源文件。

公众号用 HTML 还是 Markdown

公众号正文使用 HTML 富文本。 在 UniDoc 选择“复制公众号排版”,再粘贴到公众号后台的正文编辑区。剪贴板同时提供 text/html 和 text/plain,正文包含内联字号、行距、颜色、间距、代码和表格样式。

Markdown 是文章源格式,不是本功能向公众号直接上传的格式。“下载排版 HTML”用于保存、预览和复制,不等于公众号后台支持直接上传任意 .html 文件。本版本不调用微信素材接口、不创建草稿、不自动发布文章。

这种 HTML 富文本剪贴板方式可以在 doocs/md 复制实现 中核查;它的 导出准备流程 包括等待预览、整理内容与样式内联。UniDoc 本次未引入该项目源码或主题。

公众号排版操作

  1. 打开文档,让图表、图片和视频画面完成加载。
  2. 选择 文件 → 导出 → 微信公众号排版。默认选中“保留原样”;普通长文也可以选择“文章阅读”。打开选择窗口不会开始上传。
  3. 点击 生成排版并预览。有图片或动态资源时,需要登录 OmniDoc 并具有云文件写入、读取和分享权限。生成的图片托管到用户自己的 OmniDoc/R2,持图片链接可访问。
  4. 图片最多 4 张并行托管,前置权限检查共用一次;每张图片仍独立完成上传、确认和分享。画面转换与上传分别排队,有图片就自动补满空闲上传通道,最多 4 路;收尾不足 4 张或仍在生成图片时,并行数会自然下降。窗口显示完成数与正在处理数。准备完成后,检查默认 手机 · 390 预览,也可切换 宽屏 · 680。小屏设备按可用宽度显示。展开“资源与转换说明”,检查静态画面、图片大小提示和浮动框顺序。
  5. 点击 复制公众号排版,粘贴到公众号后台正文。剪贴板权限被拒绝时,可使用 下载排版 HTML 保存后手动复制正文。
  6. 在公众号后台确认图片转存成功,保存草稿,再检查手机预览和链接,然后按正常流程发布。

平台可能清洗 HTML、调整样式、限制外链或转存图片。本地预览不能替代公众号后台保存后的验收;当前未完成真实公众号账户的粘贴、草稿重开与手机预览验收。

两种排版方式

方式适合内容输出处理
保留原样(默认)已经设计好的复杂 HTML、带品牌样式的正文保留正文内联字号、颜色、行距、边框、背景色和间距。复杂布局、SVG 图形、渐变、叠层与沙盒 HTML 按完整组件转为高清 PNG;组件内文字随图片保留
文章阅读长文、笔记、说明文章使用统一的标题、正文、引用、代码与表格样式。正文保留文字;动态内容和自由 HTML 仍转为静态图片

“保留原样”保留可兼容的文字样式与复杂组件画面,不是完整纸张坐标的逐像素复制。浮动框仍按位置排序后附在正文后;不能保证双栏阅读顺序。原宽度很大的 HTML 缩进手机正文后,图内文字会变小,需在预览中检查。组件内部不会再执行按钮、动画或实时刷新,快照下方保留采集时间。

长画面优先避开采集到的文字行、表格行和图形边界切片,图片连续排列。不会把 SVG 源码直接放进公众号正文。当前静态图片统一为 PNG,未实现微信素材 API 的自动转存、严格单图字节预算或任意复杂网页的无损重排。

通用 Markdown 操作

选择 文件 → 导出 → Markdown,准备完成后点击 下载 Markdown。原有 Markdown 快捷入口也使用同一流程,不再区分平台专用 Markdown。

内容文章输出
标题、段落、加粗、引用、列表、代码保留可编辑的 Markdown 语义
本地、内嵌、远程图片读取真实字节,转静态 PNG,托管到当前用户的 R2
Canvas、动画、行情、沙盒 HTML采集当前画面,生成高清 PNG,附静态快照时间
自由 HTML 文本框保留可读取的画面,按高度拆成连续图片,避免原来被遗漏
数学公式渲染为 PNG,保留公式源作为图片说明;行内公式留在文字行中,独立公式单独排列
简单表格转为 Markdown 表格
合并单元格表格转静态图,避免合并跨度被悄悄丢弃
可解码且允许截图的视频读取真实首帧,文章中不能继续播放;不改变原播放器的进度和状态
浮动文本框按页码和位置排列,接在正文后,不保留纸张坐标

普通图片最大宽度为 2400 像素;快照最高 2 倍比例、宽度最多 2400 像素。快照上限为宽 4096、高 16000、总面积 1800 万 CSS 像素,超限会要求拆分。长画面按高度生成连续图片,不直接截断尾部。

行内 LaTeX 公式

原生文档中的 $…$、\(…\) 行内公式,以及 $$…$$、\[…\] 独立公式,会先识别外层标记,再渲染公式内容。不会把 $ 当成 KaTeX 数学命令,也不会修改原文档的公式源码。

公众号“保留原样”沿用公式字号与颜色;“文章阅读”使用统一正文尺度。行内公式图片保留宽高和基线偏移,与前后文字排在同一行,不会被普通图片的居中规则强制另起一行。Markdown 使用行内图片语法;最终显示尺寸仍取决于目标 Markdown 渲染器。

默认“灵感实验室”新增强化学习示例页,包含策略、回报、策略梯度与参数更新的可编辑行内公式。公众号与 Markdown 使用静态公式图;Word 使用可编辑的原生数学公式。它们不改变 .udoc 中保留的 LaTeX 源码。公众号后台仍可能清洗样式,发布前请检查草稿与手机预览。

Markdown 不再依赖当前浏览器临时地址或登录 Cookie。它适合支持 Markdown 与 HTTPS 图片的平台,不能保证任何平台都接受所有图片外链、表格语法或排版。禁止外链图片的平台仍需转存图片。本版本不提供其他平台专用选项。

R2 图片地址与有效期

上传沿用现有 OmniDoc 用户文件流程:申请上传 → 浏览器直接 PUT 到 R2 → 服务端确认 → 所有者创建单文件公开分享。不会另建公共存储桶,也不会公开整个用户目录。

Markdown 中的地址形如:

https://cloud.omnidoc.cn/cloud/storage/share/asset/<公开分享令牌>.png

微信公众号排版的复制内容和下载 HTML,图片入口改回:

https://app.unidoc.top/cloud/storage/share/asset/<公开分享令牌>.png

Markdown 保留上方的 cloud.omnidoc.cn 入口。新旧地址继续兼容,已有 R2 文件不需迁移或重新上传。香港入口仅返回 302;图片正文由浏览器直接从 R2 下载,不经过香港中转。最终下载域名仍是 R2,因此入口域名不代表公众号一定接受外链,仍需后台转存与手机预览验收。

公众号会在图片显示后继续读取并转存,普通 <img> 能显示并不代表转存成功。现已补齐分享入口和 R2 最终响应的 CORS;跨域跳转产生的 Origin: null 也可读取。R2 新增规则只允许持有效签名链接的 GET/HEAD,上传规则保持原样,无签名读取仍被拒绝。

修复已通过 Edge 的公众号来源模拟:新旧图片入口均能完成 fetch → Blob 和 Image → Canvas,14 路同时读取成功。此验证没有操作真实公众号草稿;若微信服务端转存仍报错,需要继续核对该次转存响应,不能仅凭图片首次出现认定发布成功。

排版预览的 下载排版 HTML 与 下载 Markdown 直接下载浏览器内已经生成的文件,不再为了下载额外上传到 UniDoc 后端再取回。点击后显示“已发起下载”,文件是否保存完成请查看浏览器下载列表。

来源标记与原生恢复

公众号和 Markdown 使用的 PNG,以及 Word 内生成的 PNG,写入 unidoc_type=docs、publisher=omnidoc 文本标记。动态快照另有 unidoc.source iTXt JSON:记录组件类型、原始沙盒 HTML / JavaScript、公式源码和视频配置。视频先托管到用户的 OmniDoc 云,截图元数据只保存可撤销的视频分享地址,不写入视频流或整段视频的 Base64。其他关联图片和代码资源按组件保存,不把 blob: 地址当作可长期使用的网络地址。

这些是 PNG 标准元数据,不是数字签名,也不证明内容可信。导入后仍使用原有沙盒隔离。代码和图片来源数据可能增大 PNG;源数据超过 32 MiB 的 PNG 会明确提示拆分。视频分享入口在访问时获取新的短期 R2 票据,浏览器直连 R2 读取视频字节。撤销分享、删除云端原文件或云服务不可用时,视频不能播放。

下载的公众号 HTML 保存原生文档模型、代码、图片和云端视频引用,包含 <meta name="publisher" content="OmniDoc">、UniDoc 标签页 Logo,右上角以垂直排列的工具栏提供原生下载与返回 UniDoc 编辑入口。打开本地 HTML 后点击编辑按钮,当前文件通过已有的窗口移交协议还原,不把整份内容或媒体塞进 URL。也可直接在 UniDoc 的“打开”中选择该 HTML。旧版 HTML 内的大段视频 Base64 在导入时迁入本地媒体缓存,避免编辑器反复复制大属性。

复制到公众号的仍是文章富文本,不附带编辑工具栏或执行脚本。微信转存、压缩图片可能移除 PNG 元数据,复制正文也不会保留 HTML 原生恢复包;恢复保证适用于 UniDoc 下载的原始 HTML,不能保证经过微信重新处理的文章可无损还原。请保留原始 .udoc 或下载 HTML。Word 继续携带与正文校验绑定的原生恢复包;经 Word 改写正文后,不会用旧包覆盖新编辑。

这是单文件公开访问凭证,持地址者可读取该静态图片。访问时,UniDoc 校验令牌并向 OmniDoc 申请新的下载票据,再跳转到受信的 R2 地址。文件字节仍由 R2 提供;短期签名不会直接写进 Markdown。

它是可持续解析的地址,并非永久不可撤销。撤销分享、删除源文件或源服务不可用时,图片会失效。首次访问仍需经过 OmniDoc 票据服务,其耗时和可用性影响加载。

相同图片按内容哈希去重。本设备记录已确认上传的对象;分享失败后重试可复用对象,避免重复 PUT。重新使用分享时仍向服务端核对权限和有效性。切换账户或文档会停止导出,已完成的云文件不会自动删除。

并行托管不会把正文按完成顺序打乱,也不会绕过服务端授权。上传或分享失败时停止排入后续任务,等待已经开始的任务结束后显示错误;重试可复用已确认上传。实际速度仍受图片数量、网络及 OmniDoc 授权/确认耗时影响。

视频怎样发到公众号

公众号支持视频素材;微信官方素材管理提供视频的上传和管理能力。参见 微信官方素材管理。本功能复制的是文章 HTML,没有调用微信的视频素材或草稿接口,因此不会把 R2 的普通视频地址自动变成公众号内播放器。

导出格式主面板采用紧凑的分组列表,桌面双列、手机单列;文件名与格式说明收紧,HTML 子菜单沿用相同布局。窗口限制在当前屏幕内,内容较多时只滚动中间区域。公众号排版面板的关闭和生成按钮保持可见。

视频取帧直接等待解码数据,不依赖离屏或后台页面的动画回调,避免已解码却一直等待到超时。公众号排版与 Word 都使用真实首帧,不再生成黑底播放器占位图,也不取编辑器当前播放到的位置。要在公众号文章中播放,请在后台通过视频入口添加符合该账号要求的视频素材,再检查草稿与手机预览。首帧本身若为黑场,会忠实保留;无法解码、读取失败或跨域禁止截图会明确报错。

管理与撤销

选择 文件 → 导出 → 管理导出图片,查看本设备当前账户的图片记录,点击 撤销公开地址。

撤销影响所有引用该地址的文章,不删除原 .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=flow

blank=1 是精确开关。普通入口继续打开灵感实验室。登录前草稿、分享文档和明确指定的导入或模板仍优先;空白入口不自动恢复上次 Vault。直接刷新会新建空白页,请先保存编辑内容。组合规则见 内嵌接入指南。