# 学术成绩单版式转换器(第二次修订)
一个帮你把成绩单排版整清楚的工具。
它不是文凭认证系统,不能替代学校盖章,更不是「拿来就能充数」的假证。它只是一个排版辅助工具。好用的那种。
---
## 这是什么?
这是一个运行在浏览器里的静态网页工具,专门帮助需要将中文成绩单转换为英文对照件的同学。你只需要把课程和分数填进去,它会自动:
- 根据百分制成绩换算 GPA(4.0 阶梯)
- 生成中英两份独立的编辑区(一式两份,互不污染)
- 导出带有**强制非官方水印、文件哈希和时间戳**的 PNG / A3 PDF
- 让你在合规范围内,轻松准备好与国际接轨的申请材料
**最终的章,得学校来盖。最终的真伪,得学信网和学校来认。** 本工具只负责排版和算术。
---
## 核心特性
### 🔐 安全与合规
- **强制非官方水印**:导出的每一份 PNG/PDF 都会被自动叠加上“非官方对照件”或“UNOFFICIAL LAYOUT AID”字样的半透明水印,该水印无法通过前端页面删除。
- **PDF 元数据注入**:所有导出的 PDF 文件的文档属性中都明确标注了这是非正式的版式辅助文件,避免被误用。
- **文件完整性校验**:导出的 PNG 会生成 SHA-256 摘要,附在成绩单安全区、透明报告中,以防篡改。
- **学信网在线验证**:支持填写学信网在线验证码,并与学信网核验链接一同展示,引导审核方核验官方数据。
- **隐私第一**:所有数据仅在浏览器本地处理。18 位证件号只存哈希不存明文,关闭标签页后所有数据自动清除,除非你手动保存或导出 JSON 项目文件。
### ✨ 用户体验
- **中英双语,数据隔离**:中文和英文编辑区彼此独立(除证件号等少数共用项),真正实现“一式两份”,无需担心翻译污染。
- **撤销与一键还原**:支持 Ctrl+Z 撤销编辑,一键恢复到示例模板。
- **智能导入**:支持从 Excel (XLSX/CSV) 批量导入课程,自动识别百分制、五级制、二级制和免考等成绩类型。
- **导出前二次确认**:导出需逐字输入确认短语,防止无意识操作,每次确认都会记录到本地合规日志。
- **防呆设计**:刷新页面会自动保存,防止意外丢失;关闭再开则数据清空,保护隐私。
- **无后端的离线工具**:只需一个浏览器,所有计算和渲染都在你电脑上完成。
---
## 怎么用才是对的
1. 把你自己的官方中文成绩单准备好。
2. 打开工具,将课程信息录入或导入。
3. 核对无误后,导出 PNG 或 PDF 文件。
4. 将这份**对照件**与学校盖章的**中文原件**一起,提交给教务处、国际办公室或申请院校审核。
> **章是学校盖的,真伪是学校认的。你只是用这个工具帮审核方看懂了你的材料。**
---
## 怎么跑起来
请勿直接双击 `index.html` 用 `file://` 协议打开(部分功能会受限)。
### 方法一:使用 Python(推荐)
```bash
# 进入项目目录
cd transcript-layout-converter-bilingual
# 启动 HTTP 服务
python3 -m http.server 8765 --bind 127.0.0.1然后浏览器打开 http://127.0.0.1:8765
chmod +x serve.sh
./serve.sh这个项目里所有的示例数据——学校名、人名、学号、地址、验证码——都是虚构的占位符。
在这份工具的源码和文档中,有三条不可逾越的边界:
- 本工具不生成、不存储、不模拟任何形式的电子签名、印章或公章。
- 本工具不提供任何形式的学籍认证或成绩单真伪鉴定。
- 任何试图增加上述能力的修改,都不属于本项目的范围。
签名,只能留在打印之后的那支笔上。
- 原生 HTML/CSS/JavaScript
- html2canvas – DOM 截图与导出
- jsPDF – PDF 生成
- SheetJS (xlsx) – Excel 导入支持
- qrcodejs – 二维码生成
详见 README.md 中“开发与校验”一节(包含 smoke 检查、CI、静态检查等)。
这个项目的诞生,源于一次差点跨过红线的教训。在技术社区的帮助下,我选择了凝视深渊后转身,将那些曾经危险的思路,化成了保护自己和他人不犯错的规则。
感谢 鱼皮(程序员鱼皮) 的及时警告和方向指引,感谢所有在悬崖边拉了我一把的人,也感谢那个选择用技术保护他人的自己。
世界是论迹不论心的。这份代码、这份文档、这一整套安全体系,就是我能留下的最好的「迹」。
这份 README 既保留了技术细节,又突出了项目的合规精神和人性化设计,适合作为开源项目的门面。