混合格式批量Mixed-format batches
一次拖 40
个不同类型的文件。每个文件各自解析到自己的最短路径;目标格式下拉框只列出对批次内全部文件都可达的格式,上限
200 个。
Drop 40 files of different types. Each resolves its own route to the shared target, and only formats
reachable from every selected file are offered — up to 200 files per batch.
内置示例与目标建议Samples and suggested targets
空工作台自带 Markdown / CSV /
图片三个示例,点一下直接载入并选好对应目标;还没选目标时,按源格式给出最多 3
个推荐目标。推荐不会自动生效,点一下才等于一次普通的目标选择。
The empty workbench ships three samples (Markdown / CSV / image); one click stages one and picks its
target. While the picker is empty, up to three targets are suggested for the source format — a
suggestion never applies on its own, and clicking one is an ordinary target selection.
长批次也能找到那一条Find one row in a long batch
结果超过 8 条或出现失败时,结果卡顶部出现按文件名搜索与「全部 / 成功 /
失败」筛选。搜索同时匹配输出名与源文件名;失败视图只留失败,下载与 ZIP 仍按整批计算。
Once a batch has more than eight rows or any failure, the result card gains a file-name search and
All / Succeeded / Failed filters. Search matches the produced name and the source name; the failure
view hides successes, while downloads and the ZIP still count the whole batch.
自动多步链路Automatic multi-step chains
不存在 Markdown 直达 PDF 的转换器,但工作台会用广度优先搜索求出最短链路并逐步执行,Markdown → PDF
实际按 Markdown → HTML → PDF 两步跑完,路径在选择框下方展示。
There is no Markdown-to-PDF converter, but the workbench finds the shortest chain with BFS and runs
it step by step: Markdown → PDF executes as Markdown → HTML → PDF, with the route printed under the
picker.
失败隔离、可取消、可撤销Failure isolation, cancel, undo
一个读不了的文件不会阻断其余部分:失败按文件列出原因,还能展开看到它尝试的转换路径与出错的那一步,并一键复制诊断信息。长批次能随时取消,已完成的结果保留;上一轮结果误操作可一键撤销。
One unreadable file never blocks the rest — failures are listed per file with the reason, expand to
the route each one tried and the step that broke, and copy that diagnostic with one click. A long
batch is cancellable with finished results kept, and the last result can be undone.
对比、同步滚动、可拖分隔条Side-by-side, sync scroll, draggable divider
源文件与结果左右并排,分隔条可拖拽,滚动可同步;也能切到仅原文件 / 仅结果,或用 1 /
2 / 3 直接切换、← /
→ 微调分隔条。渲染视图与源码视图一键切换,结果可直接复制;分隔条位置会被记住。
Source and result sit side by side with a draggable divider and synchronised scrolling; you can also
switch to source-only or result-only, with 1 / 2 / 3 jumping between
the modes and ← / → nudging the divider. Rendered and source views toggle in one
click, results copy to the clipboard, and the divider position is remembered.
下载前可编辑结果Edit the result before download
文本类结果(Markdown / HTML / TXT / JSON /
CSV)能在对比视图里直接改,改完再下载,不必回到编辑器绕一圈。
Text results (Markdown, HTML, TXT, JSON, CSV) are editable inline in the comparison view, so a small
fix never sends you back to another editor.
JSON 按结构看,不按字符看JSON read as a structure, not as characters
JSON
的预览有树、数组表与原文三个视图:树逐层展开,数组表把对象数组摊成行列并可点单元格在树里展开定位,原文保留缩进。树内可按键名、路径或值搜索(三项任意组合、可区分大小写),命中处高亮并支持上一处
/ 下一处跳转,任意一行都能复制它的 JSONPath。解析预算为 10 万节点 / 128 层嵌套,单屏最多渲染 5 000
行、数组表最多 2 000 行且单元格上限 2 万、匹配上限 5 000
处——任何一项触顶都会在界面上写明实际读了多少,半棵树不会冒充整个文档。
JSON previews in three views — a tree that expands level by level, an array table that lays objects
out as rows and columns (a cell click opens that node in the tree), and the raw indented text. Inside
the tree you can search keys, paths, or values (any combination, case sensitivity optional); hits
highlight, previous / next steps through them, and any row copies its JSONPath with one click. The
budget is 100 000 nodes and 128 levels, 5 000 painted rows, a 2 000-row table capped at 20 000 cells,
and 5 000 matches — and when any budget is reached the interface says how much of the document it
actually read, so a half-parsed tree never passes itself off as the whole file.
粘贴、文件夹与压缩包入口Paste, folder and archive intake
Ctrl/⌘+V
直接粘剪贴板里的图片或文本开始转换;文件也能丢到工作台任意位置,不必命中上传区,丢一个文件夹进来
会把里面能转换的文件一起收进批次;拖一个
.zip 进来会自动展开,把其中支持的条目加入批次。
Ctrl/⌘+V converts a clipboard image or text block; files can be
dropped anywhere on the workbench rather than only on the upload zone, a dropped folder contributes
the convertible files inside it, and dropping a .zip expands it and adds every supported
entry to the batch.
一个 ZIP,压缩策略按条目定One ZIP, per-entry compression
文本结果 deflate 后约小 10 倍;图片按页面内容而定——12 页真实 PDF 导出实测 PNG 条目小
39%,而一页以纯色为主的文档,PNG 与 WebP 各小一半、JPEG 小 91%。PDF / XLSX / DOCX
这类自带容器的产物直接 stored,不浪费 CPU。单文件则直接下载,不会强塞进 ZIP。
Text results deflate to roughly a tenth of the size; images depend on what is on the page — a real
12-page PDF export measured its PNG entries 39% smaller, and a mostly flat document page gives 50% as
PNG or WebP and 91% as JPEG. Outputs that carry their own container — PDF, XLSX, DOCX — are stored
as-is so no CPU is wasted. A single result downloads on its own rather than being forced into an
archive.
图片输出参数Image output parameters
目标是 PNG / JPEG / WebP 时,面板给出真正的编码器旋钮:质量 40–90%、最长边 800–4096 px、目标体积 20
KB–2 MB(质量与目标体积仅 JPEG / WebP),源里有 PDF 时还能选 96–300
DPI。目标体积靠质量阶梯反复编码逼近。每一项默认「不动」,一键恢复默认,参数本身持久化到本机。同一行的「页码范围」是另一回事:它只栅格化你点名的那几页(如
1-3, 5),说的是这份文件的哪几页,因此不出本机、也不进预设。
A PNG / JPEG / WebP target exposes the real encoder knobs: quality 40–90% and a target size of 20
KB–2 MB for JPEG and WebP, longest edge 800–4096 px for all three, plus 96–300 DPI when a PDF is in
the batch. The size ceiling is met by walking a quality ladder. Every knob starts untouched, one
control restores the defaults, and the settings persist on your machine. The Pages field beside them
is a different kind of thing: it rasterizes only the pages you name (1-3, 5), and because it states
which pages this file means it is never stored and never part of a preset.
转换预设Conversion presets
把「目标格式 + 输出参数」存成一个命名快捷方式(最多 12
个),下次一键恢复。预设不绑定源格式,所以「1280 px 的 PNG」对来自 PDF、HTML 还是 SVG
的批次都成立;工作台里没有文件时它会先被记住,等文件一落地就自动应用。存下来的只有格式与参数,不含任何文件内容。
Save a target format together with its output parameters as a named shortcut — up to 12 of them — and
restore the whole setup in one click. A preset is not bound to a source format, so "PNG at 1280 px"
works for a batch arriving from PDF, HTML or SVG alike; with no files loaded yet it is remembered and
applied the moment the next batch lands. Only the format and its parameters are stored, never file
content.
输出文件名由你定Names you can write yourself
结果默认叫
原名_20260914_153012.pdf:日期加时间精确到秒,同一天转两批不会互相覆盖。偏好设置里这一串可以改写,{name}
(源文件名去掉后缀)、{date}、{time}、{index}(本批序号)、{target}
(目标格式)任意组合,输入框下方实时给出示例。路径分隔符与控制字符会被清掉,扩展名始终由实际产物决定,所以再离谱的模板也写不出路径、写不出说谎的后缀;写错的占位符按普通文字保留并当场提示。这套写法只存在扩展自己的本地存储里。
A result is called original_20260914_153012.pdf by default — date plus time to the
second, so two batches on one day never overwrite each other. Preferences lets you rewrite that string
from any mix of {name} (the source name without its extension), {date},
{time}, {index} (position in the batch) and {target} (the
output format), with a live example under the field. Path separators and control characters get
stripped and the extension always comes from the artifact itself, so no pattern can produce a path or
a suffix that is not true; a mis-typed placeholder stays literal and is pointed out on the spot. The
pattern is written only to the extension's own local storage.
只存元数据的历史History with metadata only
保留最近 50
次转换的文件名、格式与体积——不含文件内容。可按文件名搜索、按源/目标筛选、一键复用格式组合,也能导出
JSON 到新设备导入。最近用过的目标格式(最多 6
个)还会以下拉顶部的「最近使用」分组呈现,同样只记格式名。
Keeps the last 50 conversions as names, formats and sizes — never file contents. Search by file name,
filter by source or target, reuse a combination in one click, export as JSON and import it on another
device. The formats you convert to most often (up to 6) also lead the target dropdown as a "recently
used" group — format names only, again.
中文表格不乱码Chinese spreadsheets stay readable
CSV 读取先认出 UTF-16(含 Excel「Unicode 文本」那种没写 BOM 的),再试 UTF-8, 失败依次回退 GB18030
与 GBK;写出时带 BOM。国内系统导出的老编码表格能打开,转出的 CSV 在 Excel 里也不会变方块。
CSV reads detect UTF-16 first — including the BOM-less "Unicode Text" variant Excel writes — then
fall back UTF-8 → GB18030 → GBK automatically, and write UTF-8 with BOM, so legacy-encoded exports
open correctly and converted CSVs land in Excel without mojibake.
不可用就写清原因Unusable targets say why
选不了的目标不是静默消失,而是置灰并给出具体原因:与源格式相同、需 OCR、PDF
无法可靠转为结构化数据等——避免点了转换才发现不行。图上有 143 个可达组合,其中 27
个属于这类语义无效,被屏蔽后下拉实际提供 116 个。
Disabled targets are greyed out with a specific reason rather than silently missing: same as source,
needs OCR, or PDF cannot be reliably turned into structured data. Of the 143 combinations reachable in
the graph, 27 are semantically invalid, so the picker offers 116.
6 种主题色 × 浅色/深色/系统6 accent colours × light / dark / system
主题在页面挂载前应用,不会闪白。语言、主题、快捷键、大批次确认与后台完成通知的开关,以及历史卡片的折叠状态都记在本地;开始转换的
Ctrl/⌘+Enter 可改绑。
The theme is applied before mount, so there is no flash of the wrong palette. Language, theme,
shortcut, the large-batch confirmation and completion-notification switches, and the collapsed state
of the history card all persist locally; the Ctrl/⌘+Enter convert
shortcut is rebindable.
键盘可达与无障碍Keyboard and accessibility
跳转主内容链接、可见焦点环、prefers-reduced-motion 降级;转换进度与文件列表的增减通过
role="status"
区域播报,删除历史后 5 秒内还可以撤销。端到端套件在 6 主题 × 浅/深共 12
种组合下逐项实测五组承担对比度契约的颜色。卡片上的文字全部达标:拖放提示与文件大小这类正文信息文字对各自底色
≥ 4.5:1,Element Plus
浅色效果的警示框标题与文件行的格式标签——它们用同一支语义色既当墨又当底——对各自的浅色底 ≥
4.5:1,焦点环对卡片背景 ≥ 3:1。彩色表面上的白字是刻意的取舍:主按钮文字在常态 / 悬停 /
按下三种状态下,紫、玫瑰、石板与全部深色主题 ≥
4.5:1(读数取自确实可点击的按钮,文本规则豁免禁用控件),而晴空蓝 / 森林绿 / 活力橙为
2.78→2.22、2.54→1.92、3.56→2.80;顶栏品牌字 2.78 / 2.54 / 3.56,版本号芯片与两枚玻璃按钮在白色薄膜上
2.36 / 2.22 /
3.00——为与作者的另外两个扩展共用同一套皮肤,这些读数作为明示的已知限制逐主题钉住下限,而不是当作已达标呈现。
Skip link to the main content, visible focus rings and a
prefers-reduced-motion fallback. The end-to-end suite measures the five colour pairs that
carry the contrast contract — informational text such as the drop hint and file sizes at 4.5:1 or
better on their own backdrop, the light-effect alerts and per-file format tags, whose semantic colour
serves as both ink and fill, at 4.5:1 or better against the tint underneath them, and the focus ring
on a card at 3:1 or better — in all 12 theme × light/dark combinations. White on the coloured surfaces
is the deliberate trade: the primary button's label clears 4.5:1 under purple, rose, slate and every
dark theme (read off the enabled button, because the text rule exempts disabled controls), while sky
blue, forest green and orange run 2.78 → 2.22, 2.54 → 1.92 and 3.56 → 2.80 from rest to hover, and the
topbar wordmark measures 2.78 / 2.54 / 3.56 with its chip and two glass buttons at 2.36 / 2.22 / 3.00
on the white film. Those readings are stated known limitations, pinned per theme so they cannot
quietly widen — not a pass.