格式转换器长期规划(能力版图与转换路线)
状态:长期规划未完成;八个能力区已交付首轮功能(2026-10-09)。 编写日期:2026-10-08;校对日期:2026-10-12(Asia/Shanghai)。当前进度与待办见 §16。 本文回答「最后可以变成什么样、包含哪些格式、每类具体怎么转换」。 首轮交付、原始实施建议与验收缺口另见
docs/format-converter-implementation.md。 ⚠️ 本文仍是路线图,不是支持清单:已实施的范围以能力登记表为准 (src/lib/file-converter/的边,status: 'live'才出现在页面菜单里; 见docs/architecture.md§6.17)。登记表当前只有两条planned边:office:html-print-pdf/office:docx-to-pdf,不进菜单;其他长期候选未必已登记。 判断「现在到底能不能转 X」,看工具页面,不要照本文推。
1. 最终产品形态
长期目标是一个覆盖日常文件处理的站内工具:拖入文件,识别真实内容,提供合理的 转换目标,说明转换会改变什么,预览结果,再下载。 用户既能按「目标格式」操作, 也能按「我要在手机播放」「我要发到网页」「我要从 PDF 取文字」这类用途操作。
它可以发展成八个能力区,使用同一套文件选择、任务队列、参数预设、错误反馈与下载:
- 图片:普通图片、手机照片、动画、图标,以及受控的矢量图光栅化。
- 音频:兼容播放、压缩、无压缩编辑素材、换封装与视频中的音轨提取。
- 视频:兼容格式、换封装、压缩、短片、动图与帧序列。
- 文档与 PDF:Office 导出、网页与 Markdown 导出、图片成 PDF、PDF 页面和文字提取。
- 表格与结构化数据:Excel / ODS / CSV / TSV / JSON / YAML / XML 的有规则转换。
- 文本编码与字幕:解决乱码、转字符编码、换行与 SRT / VTT / ASS 字幕格式。
- 电子书:EPUB 制作与提取,常见无保护电子书格式的兼容转换。
- 压缩包:批量打包、解包、换压缩容器,以及包内文件的选择性转换。
典型终态体验:
- 拖入 HEIC,看到「转 JPG,便于分享」「转 PNG,保留解码后的像素」两种用途。
- 拖入 OGG,看到「MP3,广泛兼容」「M4A,小体积」「WAV,供编辑软件使用」。
- 拖入 MKV,先探测音视频编码,再判断能否直接换成 MP4,还是需要重编码。
- 拖入 PDF,提供「按页导出图片」「提取文字」「识别扫描页」「转可编辑文档」, 四种目标各自说明保真范围。
- 拖入 XLSX,先选择工作表,再决定输出显示值、原始值或公式文本。
- 批量转换同类文件,查看部分成功结果;可分别保存,也可打包 ZIP。
界面仍保持简单:默认给推荐目标与少量重要参数,展开「高级选项」才显示采样率、 像素格式、工作表映射等专业参数。不会把所有已安装引擎的格式直接堆成下拉列表。
2. 先区分六种不同的转换
| 转换方式 | 中间处理对象 | 例子 | 对质量 / 结构的影响 |
|---|---|---|---|
| 换封装 | 原始编码包 | 兼容编码的 MKV → MP4、AAC → M4A | 合格的流可原样复制;目标容器不支持的轨道需处理 |
| 重新编码 | 解码后的像素、PCM 或视频帧 | OGG → MP3、PNG → JPG、HEVC → H.264 | 编码参数决定质量;有损源转无损格式不会恢复细节 |
| 重新排版 / 结构转换 | 段落、表格、样式与文档树 | DOCX → PDF、Markdown → DOCX、EPUB → PDF | 文字可保留,页码与版式可能改变 |
| 数据映射 | 类型明确的记录 / 单元格 | CSV → JSON、XLSX → CSV、XML → JSON | 必须定义列、类型、工作表、属性与缺失值规则 |
| 信息提取 / 重建 | 文字、页面图像、识别结果 | PDF → TXT、扫描 PDF → DOCX、PNG → SVG 描摹 | 可能丢失版式或产生识别误差,不能宣称原样还原 |
| 解包后重打包 | 包内成员及其属性 | RAR → ZIP、ZIP → TAR.GZ | 文件内容可保持,权限、时间、加密与目录属性可能改变 |
长期工具需要把这些方式明示到结果说明中。换封装可以优先节省时间与避免重编码, 但只适用于目标容器兼容的流;不满足条件时要说明需重编码的轨道。 技术依据:FFmpeg 的 streamcopy 与转码
两条共通规则:
- 支持 A → B 不意味着支持 B → A,更不意味着可还原到原文件。
- 扩展名、容器和编码分别建模。例如
.ogg可以装 Vorbis 或 Opus,.mp4可以装 H.264 或 HEVC,.wav也不保证里面一定是所选 PCM 规格。
3. 能力版图与优先级
下文用「基础目标」「扩展目标」「专项候选」表示产品建设优先级:
- 基础目标:日常用途明确,属于最值得持续建设的部分。
- 扩展目标:有成熟处理路线,但依赖更大引擎、特殊参数或更重的兼容性验收。
- 专项候选:成本或保真问题明显,按具体需求决定是否建设,不写成必做承诺。
| 能力区 | 基础目标 | 扩展目标 | 专项候选 |
|---|---|---|---|
| 图片 | JPG / PNG / WebP 互转、缩放、压缩 | AVIF、HEIC 输入、BMP、TIFF、ICO、动画、SVG 光栅化 | HEIC 输出、摄影 RAW、JPEG XL、自动矢量描摹 |
| 音频 | MP3 / WAV / FLAC / OGG / M4A 常用组合 | AAC、Opus、AIFF、ALAC、旧音频格式输入 | 专业多声道、无损剪辑与复杂音频制作 |
| 视频 | MP4 / WebM / MKV / MOV、提取音频、短片压缩 | AVI / FLV / WMV / 3GP / TS 输入、动图、帧序列 | HEVC / AV1 高成本编码、HDR、专业中间格式 |
| 文档 / PDF | PDF ↔ 页面图片、PDF 文字提取、Markdown / HTML 导出 | DOC / DOCX / ODT / RTF、PPT / PPTX / ODP、OCR | PDF 重建为复杂 Word、扫描表格恢复 |
| 表格 / 数据 | XLSX / CSV / TSV / JSON、工作表选择 | XLS / ODS、YAML / XML / NDJSON、表格 PDF | 宏、图表和复杂公式的完整往返保真 |
| 文本 / 字幕 | UTF-8 / UTF-16 / GBK / GB18030、SRT / VTT | ASS / SSA、SUB 有条件导入 | 图像字幕 OCR、复杂字幕样式往返保真 |
| 电子书 | Markdown / DOCX / HTML → EPUB、EPUB 内容提取 | EPUB → PDF、无保护 MOBI / AZW3 导入 | 复杂教材、固定版式 EPUB、旧阅读器专用输出 |
| 压缩包 | ZIP 打包 / 解包、GZIP 与 TAR 基础处理 | TAR.GZ / TAR.XZ / 7Z、RAR 导入后转 ZIP | 分卷、复杂加密、完整 Unix 属性与大包处理 |
优先级表示值得建设的方向;浏览器是否具备能力、所选二进制是否启用编码器,仍要 逐项验证。后续章节给出每个方向的处理方法和不能省略的参数。
4. 图片转换:从普通图片到照片与动画
4.1 静态位图与图标
| 编号 | 转换方向 | 怎么转换 | 关键参数 / 边界 | 优先级 |
|---|---|---|---|---|
| I01 | JPG / JPEG ↔ PNG | 解码为像素 → 归一方向 → 编码目标格式 | PNG → JPG 先铺背景;JPG → PNG 不补回细节 | 基础 |
| I02 | JPG / PNG ↔ WebP | 像素解码 → WebP 或目标编码器 | 无损 / 有损、质量、透明;原生输出缺能力时用专用 WASM | 基础 |
| I03 | JPG / PNG / WebP ↔ AVIF | AVIF 解码器 / 编码器与像素管线衔接 | 质量、编码耗时、位深与目标设备兼容性 | 扩展 |
| I04 | HEIC / HEIF → JPG / PNG / WebP | libheif 等专用解码器 → 像素 → 普通图片编码 | 主图、方向、HDR 转 SDR;多图与辅助图不默默丢弃 | 扩展 |
| I05 | BMP ↔ PNG / JPG | BMP 解析 / 编码器与像素管线衔接 | 位深、调色板、透明规则;BMP 输出通常大 | 扩展 |
| I06 | TIFF → PNG / JPG;普通图片 → TIFF | TIFF 解码 / 编码 → 目标像素输出 | 多页逐页导出,位深、压缩、页码、色彩空间 | 扩展 |
| I07 | PNG / JPG → ICO;ICO → PNG | 像素缩放 → 写多尺寸图标;读图标各尺寸后提取 | 图标尺寸集合与透明;ICO 多张图不是一张大图 | 扩展 |
| I08 | SVG → PNG / JPG / WebP | 受控 SVG 解析 → 光栅化 → 位图编码 | 输出尺寸、字体、背景;不执行脚本、不抓外部资源 | 扩展 |
| I09 | JPG / PNG / WebP → 较小的同格式 | 缩放和 / 或重编码 | 明确像素尺寸、质量、体积目标只是估计 | 基础 |
| I10 | 普通图片 → HEIC;RAW / JPEG XL 输入 | 分别验证 HEVC 图片编码、RAW 显影或 JPEG XL 解码引擎 | 不借一个已有图片库就宣称全支持;需要专门色彩与位深验收 | 专项 |
普通静态图优先沿用浏览器原生管线,再按需引入专用 WASM 编解码器。若未来采用 服务器模式,可复用 sharp 处理常见位图;其 HEIC 编码涉及带相应编解码支持的 libvips 配置,不能默认认为项目已有 sharp 安装包就能直接输出 HEIC。 技术依据:sharp 输出与 HEIF 配置、libheif 编解码组成
SVG 光栅化是转换器自己的受控流程,不放宽本站图床或评论 / 讨论的白名单。结果 输出普通位图;源 SVG 不在本站同源页面中作为可执行文档打开。复杂字体和滤镜 的表现需要样本验收。
4.2 动画与帧序列
| 编号 | 转换方向 | 怎么转换 | 必须保持 / 明示 |
|---|---|---|---|
| I11 | GIF ↔ 动画 WebP / APNG | 解码整段帧 → 按帧时长与处置规则重建 → 目标动画编码 | 帧数、时长、循环、透明;目标格式的颜色能力 |
| I12 | GIF / 动画 WebP / APNG → PNG 序列 | 先合成每个显示时刻的完整帧,再逐帧输出 | 局部帧不能直接当完整图;输出很多文件时打包 ZIP |
| I13 | PNG / JPG 序列 → GIF / 动画 WebP / APNG | 用户确认帧序与时长 → 对齐画布 → 动画编码 | 顺序、帧率、画布尺寸、循环;JPG 没有透明 |
| I14 | 动画 → 静态 PNG / JPG | 用户选择具体帧或时间点 → 合成该帧 → 位图输出 | 明确只导出这一帧,不冒充保留动画 |
动画不能直接复用首版「一张图进 Canvas」的实现。帧处置、混合、调色板和时长是 动画正确性的组成部分,至少要验收透明 GIF、局部更新帧、非等时长帧和循环次数。
4.3 产品上的三个图片预设
- 便于分享:HEIC / AVIF / WebP → JPG,按目标尺寸缩放,默认不携带原始位置元数据。
- 保留透明:可接受透明源 → PNG / 无损 WebP;选 JPG 时显示背景处理。
- 网页小图:普通图片 → WebP / AVIF,限制宽度与质量,显示实际体积和输出预览。
PNG → SVG 的矢量描摹不归入普通互转。把 PNG 嵌进 SVG 容器仍是位图;真正的描摹 要推断轮廓与颜色,可能改变细节。若建设,名称和结果必须区别于 SVG 光栅化。
5. 音频转换:编码、封装与用途分别选择
5.1 常见输出的真实含义
| 用户看到的目标 | 实际格式 / 编码 | 主要用途 | 取舍 |
|---|---|---|---|
| MP3 | MPEG 音频的 MP3 编码 | 广泛兼容的录音 / 音乐文件 | 有损,控制码率或 VBR 质量 |
| M4A(AAC) | MP4 系容器中的 AAC | 手机和常见播放器 | 有损;与原始 .aac 流的封装不同 |
| OGG(Vorbis) | Ogg 容器中的 Vorbis | 开放格式与部分软件 | 有损;与 Opus 分开提供标签 |
| OGG / OPUS(Opus) | Ogg 容器中的 Opus | 语音与低码率音频 | 有损;处理预跳过、时间与播放兼容性 |
| WAV(PCM) | WAV 容器中的明确 PCM 规格 | 音频编辑、通用素材交换 | 无压缩,体积大;位深和采样率要说明 |
| FLAC | FLAC 无损编码 | 保存解码后的 PCM、无损素材交换 | 不能恢复有损源;保留规格仍要验证 |
| AIFF / ALAC | AIFF 中的 PCM / M4A 中的 ALAC | 特定编辑软件和无损音频用途 | 扩展目标,不和 AAC M4A 混淆 |
5.2 转换方向与步骤
| 编号 | 输入 → 输出 | 怎么转换 | 关键边界 | 优先级 |
|---|---|---|---|---|
| A01 | OGG / OPUS → MP3 / M4A / WAV / FLAC | 解封装 → Vorbis / Opus 解码 → PCM → 目标编码 | 重编码有损目标会再损失;FLAC / WAV 只保存现有解码结果 | 基础 |
| A02 | WAV / FLAC / AIFF → MP3 / AAC / Opus / Vorbis | 解码或读取 PCM → 必要重采样 → 编码 | 位深、采样率、声道、码率;压缩速度与输出质量 | 基础 / 扩展 |
| A03 | MP3 / AAC M4A → WAV / FLAC / AIFF | 解码为 PCM → 无压缩 / 无损编码 | 体积增大,不能宣称升级音质 | 基础 |
| A04 | MP3 ↔ AAC / Opus / Vorbis | 先解码再重新编码 | 用途为兼容 / 压缩,提示二次有损 | 扩展 |
| A05 | AAC ↔ M4A;兼容的音轨 → 另一容器 | 保持编码包,只换封装;必要时规范化码流头 | 确认目标接受该编码与时间信息,不执行多余重编码 | 扩展 |
| A06 | FLAC ↔ PCM WAV / AIFF;ALAC ↔ FLAC | 以一致规格解码 / 编码 | 规格不变时可验证解码样本一致;标签不是音频样本 | 扩展 |
| A07 | 多声道 → 立体声 / 单声道 | 解码 → 明确的声道布局与混音矩阵 → 编码 | 用户选择降混;不能只保留前两声道 | 专项 |
| A08 | WMA / AMR / APE / AC3 等旧或专用音频 → 常用目标 | 以实际构建中可用的专用解码器读取 → 常用编码 | 先按具体编码建立输入白名单,目标仍优先 MP3 / WAV | 扩展 / 专项 |
| A09 | 视频文件 → MP3 / M4A / WAV / FLAC | 探测并选择音轨 → 可直接抽取或解码再编码 | 多音轨语言 / 声道选择,清楚区分抽取与转码 | 基础扩展 |
通用音频以 FFmpeg 适配层为主,轻量原生 / WebCodecs / 专用 WASM 路线作为经验证的 同方向替代。安装了 FFmpeg 不代表启用了所有外部库;能力表从所选构建和样本得到。 技术依据:FFmpeg 格式与编码能力、FFmpeg 编解码器文档
5.3 长期参数与验收
高级选项逐步提供码率 / VBR、采样率、位深、声道和元数据策略,预设优先显示 「兼容播放」「小体积语音」「编辑用 WAV」「保留 PCM 的无损输出」。
目标体积可用于估计或有限次尝试,不能保证任意内容在固定体积下都达到相同质量。 验收除能播放外,还要检查时长、开头 / 末尾是否截断、音高、声道顺序和采样率。 无损方向在规格一致时比较解码样本;有损方向采用容差与合成音调样本。
音频剪辑、拼接、响度归一化可以后续作为转换选项增加,但会改变内容,任务说明中 要与「仅转换格式」区别。转成 MP3 本身不意味着必须调整响度或裁掉静音。
6. 视频转换:优先辨认容器和编码
6.1 常见目标组合
| 用户目标 | 建议组合 | 适用用途 | 需要验收 |
|---|---|---|---|
| 通用 MP4 | MP4 + H.264 + AAC | 普通网页、手机、社交软件和播放器 | 所选编码级别、像素格式、音频和实际目标软件 |
| 网页 WebM | WebM + VP9 或 VP8 + Opus | 支持该组合的网页播放 | 编码成本、浏览器支持;不能只验扩展名 |
| 保留多个轨道 | MKV + 经支持的原编码 | 多音轨、字幕、章节或存档 | 每条轨道及属性是否被保留 |
| 更高压缩率 | MP4 / MKV + HEVC 或 AV1 + 兼容音频 | 有明确目标设备的高压缩用途 | 更重编码成本、设备支持、位深与许可 / 构建条件 |
| 编辑素材 | 明确支持的 MOV / 中间编码组合 | 已确认的剪辑软件 | 文件很大;MOV 本身不是「无损编辑格式」 |
兼容预设优先采用明确的编码组合。所谓「MP4 格式」不足以保证某台设备能播放: 里面的编码、profile、level、像素格式、位深和音轨都可能影响结果。
6.2 转换方向与步骤
| 编号 | 输入 → 输出 | 怎么转换 | 关键边界 | 优先级 |
|---|---|---|---|---|
| V01 | MKV / MOV / TS → MP4;MP4 → MKV | 探测轨道 → 兼容则复制包换容器 → 不兼容轨道按选定策略转码 | 不丢字幕 / 音轨却假称完整无损;必要的码流适配单独处理 | 基础扩展 |
| V02 | MP4 / MOV / MKV ↔ WebM | 音视频解码 → 目标允许的 VP8 / VP9 / AV1 与 Opus 等编码 → 封装 | WebM 的可接受编码有约束;字幕支持另验 | 基础扩展 |
| V03 | HEVC / AV1 视频 → 通用 H.264 MP4 | 解码 → 需要时缩放 / 色彩转换 → H.264 + AAC → MP4 | HDR → SDR 必须有明确映射,不只去掉标签 | 扩展 |
| V04 | AVI / FLV / WMV / 3GP / MPEG / MTS → MP4 / MKV | 以构建中支持的旧格式解析与解码器读取 → 合格目标 | 损坏时间戳、旋转、隔行与旧编码分别验收 | 扩展 |
| V05 | 视频 → GIF / 动画 WebP / APNG | 选择片段 → 降帧率 / 缩放 → 逐帧动画编码 | 没有音频;GIF 调色板有限,动画可比视频更大 | 扩展 |
| V06 | GIF / APNG / 图片序列 → MP4 / WebM | 按帧时长组成视频帧 → 编码 → 封装 | 原始透明可能丢失,默认不凭空生成音轨 | 扩展 |
| V07 | 视频 → PNG / JPG 帧序列或单帧 | 选择时间 / 范围 / 采样间隔 → 解码帧 → 图片输出 | 明确帧数与预计结果大小,逐帧输出可打包 | 扩展 |
| V08 | 视频 → M4A / MP3 / WAV / FLAC | 选音轨 → 可复制到目标音频容器则直接抽取,否则转码 | 不把有损抽取说成无损音频升级 | 基础扩展 |
| V09 | 同格式压缩 / 改分辨率 | 解码 → 调整尺寸 / 帧率 / 参数 → 重编码 | 是否保留帧率、比例与音轨,不能仅修改容器元信息 | 基础扩展 |
音视频容器、轨道映射和封装条件以 FFmpeg 的格式 / 流处理能力为技术基础,所选 浏览器构建的实际支持集合可能小于原生版本。用 WebCodecs / Mediabunny 加速时, 仍保留相同的转换契约与参数,不根据某台机器的硬件能力扩大对所有用户的承诺。 技术依据:FFmpeg 格式、码流与轨道处理
6.3 三个具体决策例子
- MKV 内为 H.264 + AAC,用户要 MP4:先验证目标封装与时间信息;合格时换封装, 不解码重编码,结果说明写「音视频编码保持」。若有不支持的字幕,单独导出或由 用户明确选择忽略,不能静默少一条轨道。
- MKV 内为 H.264 + 不兼容音频,用户要通用 MP4:视频可以复制,音频转 AAC。 结果说明「视频保持,音频重新编码」,不能把整个结果标为完全无损。
- MOV 内为 HEVC HDR,用户要老设备可播放:转 H.264、选兼容像素格式,并按选定 色彩方案把 HDR 映射为 SDR。保留旋转、画面比例和所选音轨,不能直接改后缀。
6.4 大文件模式
短视频先尝试本地处理。长视频的资源限制按时长、分辨率、帧率、编码与目标一起 决定,不能只按文件字节数。浏览器能读取一个 2 GB 文件,不代表能在内存中转码它。
高级阶段可研究流式本地读写、只换封装的低成本路径,或由用户主动选择服务器 模式。服务器模式单独标明文件会上传;不能在本地失败后自动上传以「优化体验」。
7. 文档与 PDF:导出、提取和重建分开
7.1 Office 与标记文档
| 编号 | 输入 → 输出 | 怎么转换 | 保真范围 / 边界 | 优先级 |
|---|---|---|---|---|
| D01 | DOC / DOCX / ODT / RTF → PDF | Office 引擎载入内容、样式和字体 → 页面布局 → PDF 导出 | 文字与布局为重点;复杂字体 / 域 / 浮动对象需视觉验收 | 扩展 |
| D02 | DOC ↔ DOCX ↔ ODT / RTF | Office 引擎解析 → 自身文档模型 → 目标过滤器 | 以文字 / 常用结构为目标,不承诺每个格式都能保留全部属性 | 扩展 |
| D03 | PPT / PPTX / ODP → PDF / 页面图片 | 演示文稿引擎逐页渲染 → PDF → 必要时图片 | 动画、转场、音视频变成静态结果,必须说明 | 扩展 |
| D04 | PPT / PPTX ↔ ODP | 演示文稿模型导入 → 目标格式导出 | 主题、母版、图表和特殊动画可能改变;不是仅打包 XML | 扩展 |
| D05 | Markdown / HTML / DOCX / ODT → Markdown / HTML / DOCX / ODT / RTF | 解析成文档树 → 目标 writer,或 Office 引擎转换 | 只提供实际 reader / writer 存在的方向;强调内容结构,非像素级排版 | 基础扩展 |
| D06 | Markdown / HTML → PDF | 按模板渲染 HTML → PDF 页面布局引擎,或文档引擎导出 | 中文字体、分页、表格、公式和资源包有明确规则 | 基础扩展 |
| D07 | 文档 → TXT | 提取段落 / 表格文字 → 指定编码输出 | 图片、样式、公式结构与版式可能丢失,显示提取范围 | 基础扩展 |
Office 格式的主要候选是 LibreOffice 的受控无界面转换;标记文档的主要候选是 Pandoc,按它实际支持的 reader / writer 建立方向表。Pandoc 的文档树转换与 Office 排版不同,不能把它当作复杂 Word 页面原样还原工具。 技术依据:LibreOffice 过滤器、Pandoc 输入输出与 PDF 引擎
HTML → PDF 的候选包括受控的无界面浏览器;它需要独立的服务端运行环境与字体。 浏览器本地「打印并由用户保存 PDF」可以作为早期替代,但应标为手动打印流程, 不能假装已能直接生成下载文件。
普通用户文件里的 Markdown 先按普通 Markdown 解析,不自动解引用本站的特殊 内容 token。未来若提供「站内文章导出」,明确选取站内来源,沿用当前用户的读取 权限与现有渲染管线,并独立说明资源是否随结果打包,不能混进普通文件转换。
7.2 PDF 与图片、文字
| 编号 | 输入 → 输出 | 怎么转换 | 保真范围 / 边界 | 优先级 |
|---|---|---|---|---|
| D08 | PDF → PNG / JPG / WebP | 选择页码与渲染分辨率 → PDF.js 等渲染器逐页画到像素 → 图片编码 | 页面外观保留,文字变像素;页数与像素预算共同限制 | 基础 |
| D09 | JPG / PNG / 普通图片 → PDF | 按用户排序 → 处理方向 / 页面尺寸 → 将图像嵌入 PDF | 无 OCR 时不产生可搜索文字;尽量避免不必要重编码 | 基础 |
| D10 | 文字型 PDF → TXT / 有结构的 Markdown | 读取文字对象和位置 → 推断阅读顺序 / 段落 → 导出 | 多栏、表格、连字、页眉页脚要测试,结果不是原版式 | 基础扩展 |
| D11 | 扫描 PDF / 图片 → TXT | PDF 先逐页渲染 → OCR → 置信度 / 阅读顺序整理 → 文本输出 | OCR 可能有错字,需可校对;只对没有有效文字层的页识别 | 扩展 |
| D12 | 扫描 PDF → 可搜索 PDF | 保留页面图像 → OCR 字词与坐标 → 添加相应文本层 | 图像外观与可选文字对齐;签名与原文档身份会改变 | 扩展 |
| D13 | PDF → DOCX | 文字 / OCR + 布局分析 → 重建段落与表格 → DOCX writer | 标为可编辑重建;复杂版式不承诺一致,附页面对照 | 专项 |
| D14 | PDF 中的表格 → CSV / XLSX | 页面文字或 OCR → 单元格边界推断 → 用户预览确认 → 表格 writer | 合并格、跨页与数值类型易错,不能默认全自动正确 | 专项 |
| D15 | PDF → 图片型 PPTX / DOCX | 将每页渲染为图像 → 逐页放入演示 / 文档容器 | 外观可保留,但页面里的文字不是可编辑文字,名称必须说明 | 扩展 |
浏览器 PDF 渲染可使用 PDF.js,图片嵌入与简单 PDF 创建 / 修改可研究 pdf-lib。 OCR 可研究 Tesseract.js,但它自身不直接接收 PDF,需要先得到页面图像。OCR 返回文字也不等于已经完成 Word 布局重建或生成可搜索 PDF。 技术依据:PDF.js 渲染、pdf-lib、Tesseract.js 范围
7.3 PDF 操作如何归入同一工具
PDF 合并、拆分、重新排序、旋转和选页不是格式变化,但可复用相同页面和任务 模型,归入「PDF 处理」子面板。真正的 PDF 压缩可能重编码其中的图片,也可能只 重写结构;必须说明采取的方式、是否改变图像质量以及实际压缩结果。
保留原图像的 PDF → 图片型 Word,与重建可编辑段落的 PDF → Word 是两项能力。 不能先做了前者,就把菜单写成无条件支持「PDF 转 Word」。数字签名、交互表单、 注释与附件也不能因为显示的页面相同就宣称全部保留。
8. 表格与结构化数据:先明确映射规则
8.1 工作簿与表格文件
| 编号 | 输入 → 输出 | 怎么转换 | 必须提供的规则 | 优先级 |
|---|---|---|---|---|
| T01 | XLSX / XLS / ODS → CSV / TSV | 读取工作簿 → 用户选择工作表与范围 → 序列化行列 | 表头、分隔符、编码、原始值 / 显示值;多工作表逐个文件 | 基础 / 扩展 |
| T02 | CSV / TSV → XLSX / ODS | 解析引号与分隔符 → 选择列类型 → 建工作簿 | 编码、分隔符、文本列、日期、前导零、长整数 | 基础 / 扩展 |
| T03 | XLS / XLSX / ODS 之间转换 | 工作簿模型导入 / 导出,保真需要时由 Office 引擎处理 | 工作表、公式、样式保留等级;不自动执行宏 | 扩展 |
| T04 | XLSX / CSV / TSV → JSON / NDJSON | 选择表头和类型 → 行映射为对象或数组 → JSON writer | 重复列名、空值、日期、大整数、合并单元格 | 基础 |
| T05 | JSON / NDJSON → CSV / TSV / XLSX | 选定记录数组 → 列映射 / 展开规则 → 表格 writer | 嵌套对象、数组、缺失键、类型冲突与精度 | 基础扩展 |
| T06 | XLSX / ODS / CSV → PDF | 选工作表与打印范围 → Office 表格排版 → PDF | 缩放、横纵方向、分页、公式结果是否重新计算 | 扩展 |
| T07 | XLSM / XLSB → 普通 XLSX / CSV | 经验证的解析器读数据 → 按目标规则写出 | 首批作为数据导入,不执行宏、不承诺保留 VBA 和外部连接 | 扩展 |
轻量数据转换可研究 SheetJS 等工作簿读写库,它们提供多种文件读写和行列映射。 CSV / TSV 只有一张二维表,不容纳工作簿的多页、图表和完整样式,不能让它们 静默消失而仍显示「完整保留」。复杂文档保真需要另一套验收策略。 技术依据:SheetJS 文件格式、输出约束
公式文本和计算结果是两种数据。基础 JS 读写库不应被当成完整的 Excel 计算引擎; 缓存结果可能陈旧。用户选择「导出显示值」「导出公式文本」或「由指定引擎重新 计算后导出」,结果报告哪一种发生了。 技术依据:SheetJS 公式与计算范围
8.2 JSON、YAML、XML 与行式数据
| 编号 | 转换方向 | 怎么转换 | 不允许静默丢掉的内容 |
|---|---|---|---|
| T08 | JSON ↔ YAML | 安全解析到受支持的数据模型 → 序列化目标 | YAML 自定义标签、锚点、日期 / 特殊数字和注释可能不等价,先选受限规则 |
| T09 | JSON ↔ XML | 采用明确的属性 / 元素 / 数组映射 → 目标 writer | 命名空间、混合文本、元素顺序、属性与单元素数组 |
| T10 | JSON 数组 ↔ NDJSON / JSONL | 顶层数组拆为逐行 JSON,或逐行解析后组合 | 行号、错误记录、顺序、空行与大文件流式预算 |
| T11 | CSV ↔ TSV | 正确解析字段与引号 → 重新用目标分隔符序列化 | 单元格内分隔符、换行、引号;不能全文直接替换逗号 |
| T12 | HTML 表格 → CSV / XLSX | 只解析表格数据 → 明确展开合并格 → writer | 不执行 HTML,用户选择具体表格与合并格策略 |
JSON → XML 不存在一个适合所有业务的天然映射。工具提供固定、可预览的规则, 只有在同一规则内才讨论可逆;不能宣称任意 XML 与 JSON 都能无损互转。 JSON 大整数也不能先经过丢精度的普通 Number 再输出;必要时按精确数值或字符串处理。
8.3 用户可理解的预览
先显示前若干行和推断类型:例如账号 00123 是文本,金额是数值,日期是明确
格式的日期。用户可以改列类型再转换,避免前导零、长订单号和跨地区日期含义改变。
导出 CSV 时区分精确保留数据与适合表格软件直接打开的策略;若兼容策略对疑似 公式单元格加前缀,必须说明这个变换,不暗中改掉原数据。转换器本身不执行导入 文件的宏、脚本或外部链接。
9. 文本编码与字幕
9.1 字符编码与普通文本
| 编号 | 转换方向 | 怎么转换 | 用户必须能看见 / 选择 |
|---|---|---|---|
| X01 | UTF-8 ↔ UTF-16LE / UTF-16BE | 按明确的源编码解码 → 按目标编码写字节 | 字节序、BOM、无法表示的字符 |
| X02 | GBK / GB18030 / Big5 / Shift_JIS → UTF-8 | 根据声明 / BOM / 候选探测解码 → 预览 → UTF-8 输出 | 原编码无法可靠自动确定时让用户选择,不把乱码当正确结果 |
| X03 | UTF-8 → GBK / GB18030 / Big5 等 | Unicode 文本 → 专用编码库 → 目标字节 | 目标字符集不接受的字符:拒绝或显式替换,不能静默变问号 |
| X04 | LF ↔ CRLF / CR;有 BOM ↔ 无 BOM | 在已识别字符编码内规范换行 / 编码标记 | 行内容不改,换行与 BOM 是独立选项 |
| X05 | TXT → Markdown / HTML | 按普通段落与转义规则生成目标 | 原 TXT 没有标题 / 表格语义,不能凭空承诺识别全部结构 |
浏览器 TextEncoder 只提供 UTF-8 编码输出;其他目标编码需要经过验证的编码库, 例如研究 iconv-lite 的浏览器适配或专用 WASM。编码探测是候选判断,预览、允许 用户指定源编码和不可编码字符报告,才是解决乱码的必要功能。 技术依据:TextEncoder、iconv-lite 编码范围
本站已有 Base、Hex、URL、HTML 编码工具。文件转换器可链接到这些工具,但不重复 实现另一套不同口径的 Base64 / HTML 转义。把文件编码成 Base64 属于数据表示, 不会把其媒体格式从 JPG 变成 PNG。
9.2 字幕转换
| 编号 | 转换方向 | 怎么转换 | 关键边界 |
|---|---|---|---|
| X06 | SRT ↔ WebVTT | 解析 cue → 统一时间表示 → 目标字幕 writer | 时间精度、换行、支持的内联样式与 cue 设置 |
| X07 | ASS / SSA → SRT / VTT | 解析对白和时间 → 映射可表达的样式 → 输出 | 特效、定位、字体与卡拉 OK 标签可能丢失,先显示损失说明 |
| X08 | SRT / VTT → ASS | cue 与可用样式 → 套用明确的 ASS 样式模板 | 新样式是模板生成,不是恢复原字幕设计 |
| X09 | 视频内文本字幕 → SRT / VTT / ASS | 用户选字幕轨 → 复制兼容格式或转换文本 cue | 语言、默认轨与样式;字幕没烧进画面时才能直接提取 |
| X10 | SUB / IDX 等图像字幕 → SRT | 专用解析器取字幕图像和时间 → OCR → 文本 cue | .sub 也可能是文字格式,先识别内容;OCR 需校对,属于专项 |
普通字幕转换可用受限解析器 / writer;容器内字幕提取可复用 FFmpeg 的轨道探测。 字幕「烧录进视频」是渲染字幕再重新编码视频,「外挂字幕格式互转」是文本轨 转换,两者在菜单中分开,不因支持 SRT 就宣称能任意抽取画面里的字幕。
10. 电子书:内容重排与阅读器兼容
| 编号 | 转换方向 | 怎么转换 | 关键参数 / 边界 | 优先级 |
|---|---|---|---|---|
| E01 | Markdown / HTML / DOCX → EPUB | 文档树 → 章节 XHTML + CSS + 目录 / 元数据 → EPUB 封装 | 标题级别、目录、封面、图片、作者与语言 | 基础扩展 |
| E02 | EPUB → HTML / Markdown / TXT | 解包 → 按阅读顺序读章节 → 结构解析 → writer | EPUB 目录与 spine,不按 ZIP 文件名字典序读书 | 基础扩展 |
| E03 | EPUB → PDF | 读取可重排内容 → 按纸张与字体重新排版 → PDF | 页码是新生成的,原本没有固定页面;需分页 / 目录验收 | 扩展 |
| E04 | 无保护 MOBI / AZW / AZW3 → EPUB / PDF / TXT | 经验证的电子书引擎导入 → 文档树 / 页面输出 | 具体变体逐项验收,不包含受保护内容的解密 | 扩展 |
| E05 | PDF → EPUB | 文字 / OCR + 阅读顺序 → 重建章节 → EPUB | 固定页面转可重排内容,适合简单书籍,不能承诺教材版式一致 | 专项 |
| E06 | EPUB → 特定阅读器格式 | 目标引擎的明确 writer 与设备 profile | 仅因已知设备需求提供,旧格式不作为默认输出 | 专项 |
EPUB 制作可研究 Pandoc,已有电子书格式兼容可研究 Calibre 的 ebook-convert。 输入与输出支持是两个方向的能力,需要检查所选版本的插件与参数;不预先把 所有 ebook 后缀列为双向支持。 技术依据:Pandoc EPUB、Calibre 转换入口
正文重排可以改善手机阅读,但也可能改变段落、脚注、公式和图片位置。电子书 验收使用至少一种阅读器打开,检查章节顺序、目录、封面、链接与中文字符; 能解开 ZIP 容器不等于生成了正确的 EPUB。
11. 压缩包:保持包内内容再换容器
11.1 常见方向
| 编号 | 转换方向 | 怎么转换 | 关键边界 | 优先级 |
|---|---|---|---|---|
| Z01 | 多文件 / 目录 → ZIP;ZIP → 文件集合 | 明确成员清单 → ZIP writer,或读取目录 / 校验 → 解压 | 文件名、中文编码、目录、重名与输出预算 | 基础 |
| Z02 | 单文件 ↔ GZIP | 压缩 / 解压一条字节流 | GZIP 不是多文件目录包;不要把目录直接解释为 .gz |
基础 |
| Z03 | 文件集合 ↔ TAR;TAR ↔ TAR.GZ / TAR.XZ | TAR 处理目录成员 → 外层 GZIP / XZ 压缩或解压 | 内层包与外层压缩分别识别;权限与符号链接策略 | 基础 / 扩展 |
| Z04 | ZIP ↔ TAR.GZ / TAR.XZ | 解包成员 → 验证内容 → 用目标目录 / 压缩格式重打包 | 文件内容尽量保持,不能保证权限 / 时间 / 链接完全等价 | 扩展 |
| Z05 | 7Z → ZIP / TAR.GZ;ZIP → 7Z | 7z 解码 / 编码引擎与成员模型衔接 | 实际算法、固实压缩、内存、密码与分卷按阶段开放 | 扩展 |
| Z06 | RAR → ZIP / TAR.GZ | 可用 RAR 解包器读成员 → 目标 writer | 提供解包后转换,不承诺生成 RAR | 扩展 |
| Z07 | ZIP 内指定图片 / 文本 → 转换后 ZIP | 选择包内成员 → 调已有转换器 → 保留 / 重命名成员 → ZIP | 未选择文件是否保留、重名、部分失败与映射报告 | 扩展 |
ZIP 浏览器处理可研究 zip.js;更广的包格式可研究经裁剪的 WASM 或受控服务器 7-Zip。7-Zip 的格式表将 RAR 列为解包能力,不能由「能读 RAR」推导出「能写 RAR」。 技术依据:zip.js、7-Zip 格式范围
11.2 包处理自己的正确性边界
转换前显示成员数量、总解压体积和目录结构。还必须限制实际解压量、成员数量、 嵌套深度和压缩比;仅检查外层 ZIP 很小不足以控制成本。首批不递归展开包内包。
浏览器只在受控内存 / 本地临时环境处理成员;服务器解包不得让包内路径越出任务 目录。绝对路径、上级目录、链接、重名和不支持的加密有固定处理规则。原文件内容 用校验值验证,成员权限、时间和加密有变化时写进结果报告。
加密包由用户主动提供密码后处理,密码不存任务历史或日志。分卷需要用户同时 选齐文件再执行;遇到缺卷、错误密码或损坏包,不能导出一个少文件的「成功」包。
12. 统一架构:转换能力是一张有方向的图
12.1 格式与能力登记
建议在现有客户端词表之上逐步形成一份能力登记表,每条可执行转换记录:
| 字段 | 要表达什么 |
|---|---|
| 输入容器与内容条件 | 真实文件类型、编码、轨道、页数 / 工作表等前提 |
| 目标格式与编码 | 不只存输出后缀,例如 MP4 + H.264 + AAC |
| 处理方式 | 换封装、重编码、重排、映射、提取、OCR 或重打包 |
| 执行引擎与版本 | 已验证的适配器、核心构建、运行环境 |
| 设备能力条件 | 原生 API、Worker、WASM、硬件编码等实际需求 |
| 参数与预设 | 可调项、默认值、范围与语义 |
| 资源预算 | 输入 / 输出体积、像素、时长、页数、解压量等 |
| 保留与损失 | 透明、动画、标签、字体、公式、样式等的处理 |
| 验收证据 | 样本集合、实际设备、构建与测试结果 |
| 建设状态 | 规划、实验、已验证、上线;实验项不出现在普通可执行菜单 |
识别输入后,只展示这张有方向的图里满足条件的目标。不存在的边不靠改后缀补上, 也不随意拼一条会丢失内容的长链路。例如 PDF → PNG → OCR → Word 有明显损失, 只能作为明确命名的重建方案,不作为隐藏的 PDF → Word 默认实现。
12.2 引擎分工
| 引擎类别 | 承担的转换 | 建议执行位置 |
|---|---|---|
| 浏览器原生图片 API | 常见静态图片与轻量缩放 | 本地优先 |
| 图片 / 字符编码专用 WASM 或 JS | HEIC、AVIF、TIFF、动画、ICO、传统字符编码等 | 按格式按需加载,先本地验证 |
| FFmpeg / WebCodecs / Mediabunny 适配器 | 音频、视频、换封装、轨道与字幕 | 短媒体本地;重媒体单独评估服务器模式 |
| PDF.js + PDF 创建库 | PDF 渲染、页面图、文字提取、图片成 PDF | 常规本地优先,分页处理 |
| 工作簿与结构化数据解析库 | Excel / CSV / JSON / XML / YAML 等映射 | 中小数据本地优先,流式能力另验 |
| 压缩包库 | ZIP、TAR、压缩流与选定包格式 | 中小包本地,超限拒绝或明确选择另一模式 |
| Office / 文档引擎 | DOCX / PPTX / XLSX 排版与格式导出、Markdown 文档树 | LibreOffice / Pandoc 等原生方案需受控服务器环境 |
| OCR / 布局重建 | 图片文字、扫描 PDF、可编辑文档重建 | 小任务可本地;语言模型、页数和耗时单独限制 |
| 电子书引擎 | EPUB 制作与旧阅读器格式兼容 | 简单 EPUB 可本地;Calibre 路线需服务器环境 |
这里列的是职责和候选,不要求安装全部引擎。每增加一项,先核对许可、实际能力、 下载体积与维护成本,再由方向登记表引用。页首不一次加载全部库或 OCR 语言数据。
12.3 本地与服务器模式的产品契约
本地模式继续匿名可用,默认不上传文件。服务器模式只有在明确有需求、资源方案 和部署条件时建设,操作按钮明确写出「上传并转换」,用户知道处理位置。 不因本地失败而悄悄上传,也不因某种格式只能服务器处理而继续写「文件从不上传」。
服务器路线沿用本站唯一 Next 部署单元与统一调度,可按需调用受控的本机二进制 子进程;这属于新的运行时依赖与资源模型,不能把当前进程内架构说明原样当作已 满足要求。没有必要预先拆微服务,也不默认引入外部付费转换 API。
上线服务器模式前,要设计独立的排队、并发 / CPU / 内存 / 超时、断开后的任务状态、 访问控制、结果领取和临时数据生命周期。转换子进程不在 SQLite 事务里运行。 任务业务记录遵循本站软删除;临时文件与永久用户内容分开定义,不能让转换结果 默认进入图床或音频床,也不能把现有永久存储目录当临时工作目录。
如果设置账号档位,页面与接口各自执行同一档位判定,入口依本站约定处理。 是否登录、配额与收费不在本规划锁死;这些是服务器资源方案里的独立产品决定。
12.4 可组合工作流
长期可在转换任务上增加「配方」:用户先看见每一步,再执行有界的流程。例如:
一组 HEIC → JPG(统一宽度与背景)→ 按原名编号 → ZIP
视频 → 选一条音轨 → MP3 → 下载
多张照片 → 按用户顺序 → A4 PDF → 下载
扫描 PDF → 选择页码 → 页面图 → 中文 OCR → 可校对 TXT
XLSX → 选工作表 → 按列类型映射 → JSONL → GZIP
EPUB → 读取章节顺序 → Markdown + 图片资源包 → ZIP
配方复用已验收的转换边,并计算累计资源和损失;中间结果按生命周期回收。 首批提供固定配方即可,不建设任意脚本执行器或无限工作流编辑器。
13. 建设阶段:逐步到达长期形态
| 阶段 | 产品交付 | 主要建设内容 | 进入下一阶段的依据 |
|---|---|---|---|
| R1 常用图片+短音频 | JPG / PNG / 静态 WebP、OGG / WAV / FLAC / AAC M4A → MP3 / WAV | 完成首版 M0–M4,本地处理、队列、取消、参数与资源基线 | 原计划验收完成,设备与失败记录可查 |
| R2 本地文件工具扩展 | HEIC 输入、AVIF、缩放 / 压缩、更多音频输出、PDF ↔ 图片、CSV / JSON、ZIP | 专用适配器、真实能力登记、批量打包、结果损失说明 | 按类别逐项通过,加载和内存预算仍合理 |
| R3 媒体与内容转换 | 短视频 / 换封装、视频提音频、动画、字幕、文字编码、简单 EPUB | 轨道选择、帧 / 时间模型、内容树、用途预设 | 在目标设备和实际播放 / 阅读软件中验收 |
| R4 有需求的服务器转换 | Office → PDF、复杂文档导出、需要原生引擎的电子书 / 媒体 | 明确上传模式、统一服务端调度、原生依赖、临时数据与结果策略 | 成本与隐私契约成立,不影响本站正常请求 |
| R5 专项重建与高级格式 | OCR、可搜索 PDF、受限 PDF → DOCX / XLSX、专业照片 / 编码候选 | 语言数据、布局分析、人工校对、专业色彩与复杂样本 | 精度与局限可展示;有持续需求再扩大范围 |
阶段表示依赖与投入顺序,不是年份或固定上线月份。R2 / R3 里的单项能力可按实际 需求调整先后;无需等整个阶段结束才能交付一个经过验证的转换方向。
长期目标建议先到达 R3 的多数日常能力,形成一个真正好用的本地文件工具集。 R4 / R5 按本站资源与真实使用需求建设,避免为了格式数量堆上长期无人维护的引擎。 总工作量应按每条转换方向与验收设备估算,不能沿用首版的 5–9 人日覆盖整个版图。
14. 具体用途预设与完整流程
| 用户用途 | 输入示例 | 推荐流程 | 输出与明确说明 |
|---|---|---|---|
| 手机照片发给别人 | HEIC | 取主图 → 方向 / 色彩归一 → JPG | 通用图片;多图与 HDR 信息按选项处理 |
| 图片放网页 | PNG / JPG | 缩放 → WebP / AVIF → 比较实际体积 | 小图;选有损目标时可预览质量 |
| 语音给旧播放器 | OGG Opus | Opus 解码 → PCM → MP3 | 兼容音频;有损重新编码 |
| 音频交给编辑软件 | M4A / MP3 | 解码 → 所选 PCM WAV | 编辑素材;不宣称改善原音质 |
| 视频只要声音 | MP4 / MKV | 选音轨 → 能换音频封装则抽取,否则转目标编码 | M4A / MP3 / WAV,说明是否重新编码 |
| 视频换播放器 | MKV | 探测 → 兼容轨直接复制到 MP4 → 其他轨单独处理 | 对每条轨说明保持 / 改变 / 导出 |
| 做短动图 | MP4 | 选片段 → 缩放 / 帧率 → GIF / 动画 WebP | 动画,没有声音;显示体积 |
| 多张照片做资料包 | JPG / PNG | 用户排序 → 页面尺寸 / 边距 → PDF | 图片 PDF,尚未 OCR |
| PDF 发几页图片 | 选页码 → 设分辨率 → PNG / JPG → ZIP | 每页一图,失去文字的可编辑性 | |
| 扫描资料取文字 | 扫描 PDF | 分页渲染 → OCR → 校对 → TXT / DOCX | 识别 / 重建结果,附不确定项 |
| 表格给程序处理 | XLSX | 选表 → 原始值 / 显示值 → 列类型 → JSON / CSV | 可复现映射,保留长编号等文本 |
| 小说在阅读器看 | DOCX / Markdown | 章节 / 目录 → EPUB → 阅读器验收 | 可重排电子书,不保留原纸面页码 |
| 老压缩包换通用格式 | RAR / 7Z | 检查成员 → 解包 → 内容校验 → ZIP | 包内内容保持,包属性变化列出 |
这些预设组合已建设的能力,不是另起十三套转换代码。用户改目标格式或参数时, 预设名称随实际策略更新,不能仍显示「保留原质量」而实际已经重编码。
15. 长期承诺、限制与站内集成
15.1 可以长期坚持的承诺
- 能力清单来自真实通过的方向,精确到容器、编码、参数和运行模式。
- 小任务本地优先,位置与上传行为透明,用户能预览输出和看到损失说明。
- 支持批量、部分成功、取消与重试,各类别共用一套可靠的任务模型。
- 不将错误扩展名、非空结果或浏览器能预览当成唯一成功判据。
- 不默默改变文件语义:工作表、声道、动画、轨道、元数据和文字编码有固定规则。
- 已有工具、权限、图床 / 音频床配额与存储规则保持各自权威,不被转换器绕过。
15.2 不作无条件承诺的能力
| 看起来像「互转」的要求 | 实际限制 |
|---|---|
| 任意文件 ↔ 任意文件 | 内容模型不同,很多方向没有合理含义 |
| JPG / MP3 转无损格式后恢复质量 | 已经丢失的信息不会被编码格式补回 |
| 任意 PDF ↔ Word / Excel / PowerPoint | 固定页面、文档结构和表格语义不同,重建可能有误差 |
| 位图 ↔ 矢量完全一致 | 光栅化丢矢量结构,描摹推断结构;嵌图片不是矢量化 |
| 压缩到任意体积且质量不变 | 目标体积、内容复杂度与质量存在取舍 |
| 保留所有宏、脚本、签名和活动内容 | 格式与引擎可能无法表达,也不应默认执行 |
| 大文件无限转换 / 页面关闭后自动续作 | 资源与生命周期有限,需另设计流式或服务端模式 |
| 专业 CAD / 三维 / 字体 / 可执行程序随意互转 | 属于不同专业工具链,不列为日常转换器的默认版图 |
15.3 与本站其他能力协作
后续可以在用户主动选择时,将合格转换结果交给本站图床 / 音频床,或生成适合
博客编辑器插入的文件;上传仍调用既有接口、按角色与配额执行。转换器能生成
某个格式,不代表图床 / 音频床就必须接受该格式。相关契约见
docs/architecture.md §6.6/§6.15。
站内编辑器导出、图片 / 音频资源选择和普通文件转换共用底层能力,但保留用途 边界。后台重任务的引入要遵循 SQLite 事务和单部署单元约束,不能为本规划恢复 已删除的其他框架实现。
15.4 持续更新方式
本规划是能力地图,首轮实施记录保存原始步骤与交付证据。实际开发后逐项登记:已支持
方向、引擎 / 构建、目标设备、验证样本、损失说明与已知限制,再修改用户可见菜单。
上线一类能力时增加相应指南与故障排查,按 docs/README.md 的规则登记与互指。
技术依据以本文链接的官方文档为主,选型时核对所选版本的代码、许可与构建; 不把上游原生程序的全部支持列表照搬成本站浏览器构建的菜单,也不把这些候选 链接当成已经安装的依赖。
16. 当前进度与剩余工作(2026-10-12 校对)
16.1 已交付的基线
八个能力区与共享任务队列已经存在,能力定义在 src/lib/file-converter/categories/,
聚合入口为 categories/index.ts,可用性由 registry.ts 按状态与设备能力过滤。
图片缩放与更多格式、更多音频输出、视频提音频、PDF 页面处理 / OCR、表格映射、
字幕与编码、简单 EPUB、压缩包与成功结果 ZIP 打包都已有实现;用途预设与固定配方
也已交付。它们不再作为从零建设的待办,具体方向与限制看登记表及
docs/guide/格式转换器使用指南.md。
§13 的 R1–R5 表保留为建设顺序,不是当前验收状态:R1 的功能已经交付,但原计划
真机与性能验收未完成;R2 / R3 / R5 均已有部分能力,不能按编号认为整阶段已完成。
R4 服务器转换尚未实施。原始范围、历史验证与偏差见
docs/format-converter-implementation.md §12.1/§12.2/§12.3。
16.2 未完成验收与已知功能缺口
| 事项 | 状态 | 完成依据 |
|---|---|---|
| 真实浏览器 / 设备 / iframe 矩阵 | 未完成 | 按 docs/format-converter-implementation.md §10.2 补 Chrome / Edge、Firefox、macOS Safari、真实 iPhone / Android 及两类 iframe 记录 |
| 资源与上限附近样本测量 | 未完成 | 按 docs/format-converter-implementation.md §10.3 补冷 / 热加载、连续转换、取消重试、时长 / 像素上限附近样本及设备观察;保护性限额不冒充实测能力 |
| 首版完整音频矩阵与输出验证 | 原验收证据不足 | 2026-10-09 记录的真转换是 PNG→JPG、WAV→FLAC→WAV;仍需逐项核对 OGG Vorbis / Opus、AAC 等方向的独立解码、时长、声道、采样率与非静音证据 |
| 中文可搜索 PDF 的文字层 | 功能缺口 | 当前标准字体不能覆盖中文;先明确可再分发字体与嵌入方案,再验证中文能选取、复制与搜索,不能以图像层或 OCR TXT 代替 |
| HTML 排版导出 PDF | office:html-print-pdf 为 planned |
需要独立设计排版引擎 / 执行环境并验收;未实现前不进菜单 |
| DOCX 排版导出 PDF | office:docx-to-pdf 为 planned |
同上;不能把 DOCX→HTML 或图片型 PDF→DOCX 说成该方向已完成 |
以上验收缺口是对原计划的核对结果,并非宣称当前转换边都不可用。本次没有重跑引擎、 全量 e2e 或真机测试,也不将历史通过数当成当前版本的新证据。
16.3 可选候选与有意推迟项
- 轻量媒体引擎对比:Mediabunny 对比未做;如开展优化,应有界比较当前 FFmpeg 方案的实际样本、设备、载荷与行为,不把替换引擎当成既定结论。
- 登记表证据结构化:§12.1 的引擎版本与逐边验收证据尚未单独建字段;当前以 引擎文件头、锁文件、资产脚本和实施记录承载。这是有意推迟项,有维护需求再补。
- 高级图片 / 媒体:HEIC 输出、摄影 RAW、JPEG XL、专业色彩、HDR、多声道与复杂 编辑属于候选,不因已有八个标签页而算完成。
- 复杂文档 / 电子书重建:Office / EPUB 的服务器排版、可编辑 PDF 重建、旧阅读器 格式与专业布局按真实需求进入;OCR、图片型 DOCX / PPTX 与结构重建分别验收。
- 站内资源集成与多步流程:§15.3 的图床 / 音频床上传集成及 §12.4 超出现有 「转换 + 打包」的多步配方仍为候选,需单独确认范围和资源生命周期。
开展服务器候选前按 §12.3 设计上传契约、统一调度、并发与临时数据生命周期; 不改变单部署单元与 SQLite 事务内不得进行 HTTP 的约束。候选不是排期,实施后再登记 具体通过的方向、设备与限制。