三贱客 · vsGeditor
Word · Excel · PDF 一体编辑器 文件 · 表格 · PDF 终极工具(VSCode 扩展)
三贱客(vsGeditor)是一款在 VSCode 内打开并完整编辑 Word / Excel、并对 PDF 批注的一体化扩展——文件 · 表格 · PDF 终极工具。
| 格式 |
能力 |
.docx |
富文本(标题/字号/颜色/高亮/上下标/列表/任务清单/对齐/行距/缩进/代码块/样式)、表格、图片、超链接、查找替换、页眉页脚、分栏、纸张/页边距、目录、导航窗格、脚注、修订、原生批注、拼写检查、字数统计,保存回 .docx |
.xlsx |
多工作表(增/删/改名)、丰富公式、样式、边框、合并、数字格式、自动换行、自动填充、复制粘贴、撤销重做、冻结、列宽行高、插入/删除/隐藏行列、排序、自动筛选、查找替换、数据校验、图表、条件格式、数据透视汇总、批注、打印区域、选区统计,保存回 .xlsx |
.pdf |
画笔/荧光笔/文字/矩形/橡皮/白板/图章/便签批注、文本标注(高亮/下划线/删除线)、缩放、搜索、页面操作、缩略图、大纲导航、合并、导出、表单域填写、文本选中复制、双页视图 |
工具栏为 Office 功能区(Ribbon) 风格;界面中英双语「中/EN」一键切换;三种编辑器均支持 打印/打印预览;自动保存与最近文件用 VSCode 原生(files.autoSave / 文件→打开最近)。
架构
- 扩展宿主(Node) 负责文档的解析与序列化:
exceljs(Excel)、mammoth + html-to-docx(Word)、pdf-lib(PDF 写入)。
- Webview(React + TS) 负责渲染与编辑 UI;PDF 用
pdfjs-dist 渲染、fabric 做批注层。
- 保存时 webview 把编辑后的模型回传给宿主,由宿主序列化成字节写回磁盘(
CustomEditorProvider,支持脏标记 / 另存为 / 热退出备份)。
代码结构:
src/
extension.ts 扩展入口,注册三个自定义编辑器
editors/
baseEditorProvider.ts 脏标记 / 保存 / 备份 / 消息通道
excelEditorProvider.ts exceljs 读写
wordEditorProvider.ts mammoth + html-to-docx
pdfEditorProvider.ts pdf-lib 叠加批注
webview/
word/ excel/ pdf/ 三个 React 应用
shared/ vscode 消息封装 + 通用样式
开发运行
npm install
npm run build # 或 npm run watch 监听
然后在 VSCode 里按 F5(运行「运行扩展」配置),在弹出的扩展开发主机窗口中打开任意
.docx / .xlsx / .pdf 文件即可。新建可用命令面板里的
「vsGeditor: 新建 Excel/Word 文件」。
多语言 / Multi-language
界面支持中文 / English,自动跟随 VSCode 显示语言。也可在设置里手动指定:
"vsgeditor.language": "auto" // "auto" | "zh" | "en"
新增语言只需在 src/i18n.ts 里加一张「中文→目标语言」字典(中文原文即查找键,缺失项回退中文)。改设置后需重新加载窗口生效。
已知限制
- Word 通过 HTML 往返(mammoth ↔ html-to-docx)。打开已有文档时,保存会移植原文档的
styles.xml / 主题 / 字体表,保留默认字体、字号、行距与主题色,常见编辑的观感基本一致(列表/图片不受影响,因其编号与媒体仍来自新生成的部分)。但正文由编辑内容重建,复杂排版(多栏混排、文本框/形状、复杂嵌套表格)仍可能丢失;新建空文档无原始样式可移植。
- Excel「数据透视」生成的是计算后的汇总结果表(写入新工作表的普通单元格,支持行/列/值字段与求和·计数·平均·最值),并非 Excel 里可交互的原生 PivotTable(exceljs 无法写入透视表对象)。
- Excel 公式在本扩展内由内置引擎实时计算;保存时写入
{formula, result},由 Excel 打开时重新计算。引擎覆盖常用函数,少数高级函数暂不支持。
- PDF 画笔保存时同时写入采样后的 Ink 折线(兼容所有阅读器)和私有
/VSGPath 控制点;在本扩展内重开时按控制点重建平滑曲线,外部阅读器看到的是高密度折线(视觉等同平滑)。FreeText 文字依赖阅读器按 /DA 生成外观,个别阅读器渲染可能略有差异。
| |