# remoteprint **Repository Path**: cloudsky/remoteprint ## Basic Information - **Project Name**: remoteprint - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-13 - **Last Updated**: 2026-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 远程打印 - RemotePrint > 无公网IP、无服务端中转的P2P远程打印解决方案 ## 项目概述 RemotePrint 让你可以通过微信/网页随时随地连接到家里的电脑,远程打印文件到本地打印机。无需公网IP、无需中转服务器,利用WebRTC实现真正的端到端P2P连接。 ## 核心特性 - 🔒 **端到端加密** - 真正的P2P直连,数据不经过任何中转服务器 - 🌐 **无公网IP** - 利用WebRTC NAT穿透技术,突破网络限制 - 📱 **微信/H5访问** - 扫码即用,无需安装APP - 🖨️ **多打印机支持** - 自动发现局域网内打印机 - 📄 **多格式支持** - PDF、Word、Excel、PPT、图片、TXT等 - 💾 **断点续传** - 大文件分片传输,自动重试 ## 系统架构 ``` ┌─────────────┐ WebRTC P2P ┌─────────────────┐ │ 微信/H5 │ ←─────────────────→ │ 桌面客户端 │ │ 浏览器 │ │ (Electron) │ └─────────────┘ └────────┬────────┘ │ ┌─────▼─────┐ │ 打印机 │ └───────────┘ ┌─────────────┐ │ 信令服务器 │ ← 仅用于建立P2P连接,数据不经过 │ (WebSocket)│ 轻量级,可部署在免费平台 └─────────────┘ ``` ## 项目结构 ``` remoteprint/ ├── desktop-client/ # Electron桌面客户端 │ ├── src/ │ │ ├── main.js # 主进程 │ │ ├── renderer/ # 渲染进程 │ │ │ ├── index.html │ │ │ ├── app.js │ │ │ └── style.css │ │ └── services/ # 服务模块 │ │ ├── p2p-service.js # P2P连接 │ │ ├── print-service.js # 打印服务 │ │ ├── auth-service.js # 认证服务 │ │ └── config-service.js # 配置服务 │ └── package.json │ ├── h5-client/ # H5网页客户端 │ ├── index.html │ ├── js/ │ │ ├── p2p.js # P2P连接模块 │ │ ├── file-transfer.js # 文件传输 │ │ └── app.js # 主应用 │ └── package.json │ ├── signaling-server/ # WebRTC信令服务器 │ ├── index.js │ └── package.json │ └── docs/ # 文档 └── SPEC.md ``` ## 快速开始 ### 1. 启动桌面客户端 ```bash cd desktop-client npm install npm start ``` 首次运行会显示绑定二维码,用微信扫描即可连接。 ### 2. 启动信令服务器(可选) ```bash cd signaling-server npm install npm start ``` 默认端口8080。 ### 3. 访问H5客户端 开发环境: ```bash cd h5-client npm install npx http-server . -p 8080 ``` 生产环境部署到任何静态托管服务即可。 ## 使用流程 1. **安装客户端** - 在电脑上安装并启动RemotePrint桌面客户端 2. **扫码绑定** - 用微信扫描客户端显示的二维码 3. **选择打印机** - 从列表中选择要使用的打印机 4. **上传文件** - 选择要打印的文件 5. **开始打印** - 确认设置后点击打印 ## 技术细节 ### NAT穿透 使用ICE框架自动选择最佳穿透方式: 1. **本地网络** - 同一局域网内直接连接 2. **STUN** - 通过公网STUN服务器获取公网IP 3. **TURN** - 中继模式(作为备选) ### 文件传输 - 分片大小:64KB - 编码方式:Base64 - 传输协议:WebRTC DataChannel (ordered, reliable) - 断点续传:支持 ### 安全措施 - 绑定码一次性使用 - 绑定码5分钟过期 - 端到端加密传输 - 设备绑定管理 ## 适用场景 - 🏠 **家庭用户** - 在外时打印资料到家里打印机 - 🏢 **小企业** - 无需VPN,快速实现远程打印 - 📚 **学生党** - 宿舍没打印机?连接实验室/图书馆打印机 - 🏥 **医疗机构** - 隐私数据不经过第三方服务器 ## 开发指南 ### 添加新功能 1. 创建新服务模块 `src/services/xxx-service.js` 2. 在 `main.js` 中注册服务 3. 通过IPC通信 ### 添加新文件格式支持 修改 `desktop-client/src/services/print-service.js` 中的 `supportedTypes` 数组。 ## 许可证 MIT License ## 联系方式 - GitHub: https://github.com/cloudsky/remoteprint - Gitee: https://gitee.com/cloudsky/remoteprint