# file2html-project
**Repository Path**: aylerh/file2html-project
## Basic Information
- **Project Name**: file2html-project
- **Description**: 主要功能:(1)高保真文件转html与html简易编辑(带格式刷):最主要是docx2html,还有md/epub/txt等;(2)html在线编辑:可修改图片;(3)文件预览:不作为重点(因为是file-viewer自带了)(4)html2docx;(5)html2md;(6)html2epub;(7)html2txt;
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-07-09
- **Last Updated**: 2026-10-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# File2HTML 文件高保真转换平台
File2HTML 是一个基于 Go (Gin) 后端实现的高保真文件转换与预览平台。用户可以通过统一且优雅的 Web 界面,一键将 Word (.docx), Markdown (.md), Epub 电子书以及数十种编程源码转换成高保真的 HTML 网页,同时支持将 HTML/ZIP 反向导出为 DOCX、Markdown (ZIP)、EPUB 电子书及 TXT 文本,并提供全功能的多文件批量双向转换能力。
## 性能
- html2docx预览较慢:因为涉及到转换,可能每页需要几十到几百毫秒;
- 下载快;
## 主要功能
- **正向转换与在线编辑(带格式刷)**:主打高保真 docx2html(精准还原缩进、字体、表格、列表排版),兼顾 md / epub / txt 及源码转网页;
- **全自动即选即转**:文件选择或拖拽后立即启动转换,自动就绪下载,无需手动点击转换按钮;
- **批量双向转换与智能打包**:
- 支持多选文件与 ZIP 压缩包上传;
- **多文件批量转 HTML**:批量将 DOCX / MD / EPUB / TXT / 源码转为带相对路径静态资源的高保真 HTML;
- **HTML 批量转其他格式**:批量将 HTML / ZIP 反向导出为 DOCX / MD / EPUB / TXT;
- **智能下载策略**:单文件转换按原格式直接输出,多文件自动合并为 ZIP 压缩包一键下载,配备实时百分比进度条与全屏模态框在线预览;
- **反向转换导出链条**:
- `html2docx`: 将 HTML 或带图片相对链接的 ZIP 高保真转为 Word 文档(自研 OpenXML 生成引擎,支持 `border: none` 隐形表格、黑色细实线 `TableGrid`、百分比宽度与居中、页边距 9026 dxa 等比缩放防护、样式级联隔离防污染、软换行 `
` 段落拆分防字距拉伸);
- `html2md`: 将 HTML / ZIP 转为 Markdown 文档(含图片资源时自动导出包含 `images/` 的 ZIP 包);
- `html2epub`: 将 HTML / ZIP 编译构建并导出为标准的 EPUB 电子书 (.epub);
- `html2txt`: 将 HTML / ZIP 快速提取并导出纯文本 (.txt);
- **文件直接预览**:支持多文本、源码及 DOCX 浏览器端极速原生预览。
## 主页样式

### html转换与精简编辑-带格式刷

### html在线编辑-带格式刷
支持:本地.html文件、图片.zip压缩包、或.docx/.md/.epub;

### 批量转换
支持多文件/ZIP批量转HTML与HTML批量反向导出,单文件直接下载、多文件合并打包ZIP,上下通栏布局与实时进度反馈:
## 构建与运行
在本地运行以下命令,即可一键启动容器部署与调试:
```powershell
docker compose down; docker compose build; docker compose up -d
```
服务启动后,浏览器访问:`http://localhost:8566` 即可进行多文件上传转换与预览。
API Swagger 接口文档页地址:`http://localhost:8566/docs`。
## 解决痛点与使用技术
### 解决痛点
1. **完整双向反向导出**:不仅支持 Word/MD/EPUB 转 HTML,更自研支持将 HTML / ZIP 反向导出为 DOCX、MD (带图片 ZIP)、EPUB 及 TXT,提供全闭环文档处理流。
2. **多文件批量处理与智能打包**:解决了以往只能单文件转换的低效问题,支持多文档/ZIP 包批量上传,单文件按目标类型直接输出,多文件自动就地合并打包为 ZIP 供一键下载。
3. **全自动无缝交互体验**:上传即自动触发后台高保真转换,实时更新状态栏并展示下载链接,彻底解决多余按钮打断操作的问题。
4. **表格框线与排版级联隔离**:彻底修复了 CSS 样式继承导致的父级边框颜色(如 `#999`)污染内部表格、无边框表格(`border: none`)被强制画实线、以及 Word 中两端对齐(`both`)下软换行 `
` 导致字距异常拉伸的问题。
5. **高保真格式刷与排版一致性**:引入了全新“段落块级+行内字符”双重吸取的格式刷机制。能够跨目录节点提取排版属性(如字号大小、文字颜色、字体、对齐方式、缩进及 Flex 布局对齐等),并在目标段落上一键应用,解决了文档在线调整对不齐、大小不一的问题。
6. **轻量富图片编辑能力**:支持双击任意图片(`
`)唤起文件选择器,自动转化为 Base64 DataURL 进行实时无缝替换,并且支持选中图片按 `Backspace/Delete` 一键删除。编辑时带有悬停虚线(Dashed Hover)及手势暗示,兼顾高保真输出与流畅体验。
7. **零阻碍静默包更新**:将繁琐的手动下载、手动上传二次保存精简为一键“保存并更新包”机制。无阻碍保存并采用柔和变绿的状态栏通知提示,避免传统弹窗打断用户的创作流,后端自动重新 zipFolder 覆盖最新包以供下载。
8. **表格及目录键盘增强**:通过自定义按键拦截,修复了 `contenteditable` 容器内 table 单元格退格错乱与空格折叠问题,可自由敲击空格进行右端页码对齐。
9. **零服务端厚重依赖**:不依赖 LibreOffice Headless 或 Pandoc 等重量级软件,使用纯 Go 自研解析器与轻量编译器,构建极其迅速,内存开销极低。
10. **沙盒隔离与自动回收**:多用户上传预览采用隔离的 TaskID/BatchID 目录托管,并在后台开启定时垃圾回收器自动清理,保障磁盘空间不泄露。
### 使用技术
- **后端**:Go 1.24, Gin 框架, Swag API 自动构建, Goldmark 编译, Chroma v2 代码高亮, 自研 HTML2DOCX/MD/EPUB 转换引擎与 Batch 批次处理系统。
- **前端**:Vanilla HTML/CSS, 玻璃拟物态 UI, 双视区与上下通栏自适应布局, TreeWalker 高精细选区解析, Iframe 编辑沙盒技术。
- **架构**:Docker Multi-stage 极简分层构建(配合 Dockerfile.base 镜像级缓存构建优化), Docker Compose 容器化部署。
## 致谢
- [goldmark](https://github.com/yuin/goldmark) - 标准的Go语言Markdown解析器
- [chroma](https://github.com/alecthomas/chroma) - 纯Go代码语法高亮渲染器
- [gin](https://github.com/gin-gonic/gin) - 高性能的轻量Go网关框架
- [file-viewer](https://github.com/flyfish-dev/file-viewer) - 优秀的多格式在线预览库