# go-wails-printer
**Repository Path**: matrixonline/go-wails-printer
## Basic Information
- **Project Name**: go-wails-printer
- **Description**: 基于 Go + Wails + Vue 构建的跨平台打印服务软件。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-02-28
- **Last Updated**: 2026-02-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 打印服务器
基于 Go + Wails + Vue 构建的跨平台打印服务软件。
## 功能特性
- 🖨️ 支持 PDF、图片等多种格式打印
- 🌐 支持远程URL文件打印(自动下载并打印)
- 🔌 WebSocket + HTTP 双协议支持
- 📡 默认端口 11211,可自定义
- 📋 实时任务状态追踪
- 🖥️ 跨平台支持(Windows、macOS、Linux)
## 技术栈
- **后端**: Go 1.21+ / Wails v2
- **前端**: Vue 3 + Vite + Pinia
- **通信**: WebSocket + HTTP API
## 开发环境
### 前置要求
1. Go 1.21 或更高版本
2. Node.js 18 或更高版本
3. Wails CLI
```bash
# 安装 Wails CLI
go install github.com/wailsapp/wails/v2/cmd/wails@latest
# 检查环境
wails doctor
```
### 本地开发
```bash
# 安装前端依赖
cd frontend && npm install && cd ..
# 启动开发模式
wails dev
```
### 构建生产版本
```bash
# 构建当前平台
wails build
# 构建 Mac 版本
make build-mac
# 构建 Windows 版本
make build-win
# 构建 Linux 版本
make build-linux
```
## API 文档
### HTTP API
#### 获取服务状态
```
GET /api/status
```
响应:
```json
{
"isRunning": true,
"port": 11211,
"clients": 2,
"printers": [...],
"tasks": [...]
}
```
#### 获取打印机列表
```
GET /api/printers
```
响应:
```json
{
"success": true,
"printers": [
{ "name": "HP LaserJet", "isDefault": true, "status": "ready" }
]
}
```
#### 打印文件
```
POST /api/print
Content-Type: application/json
// 方式1: Base64数据
{
"fileType": "pdf",
"printer": "HP LaserJet",
"data": "base64编码的文件数据"
}
// 方式2: 远程URL
{
"fileType": "pdf",
"printer": "HP LaserJet",
"url": "https://example.com/document.pdf"
}
```
响应:
```json
{
"success": true,
"taskId": "abc123",
"status": "pending"
}
```
#### 获取任务列表
```
GET /api/tasks
```
### WebSocket API
连接地址: `ws://localhost:11211/ws`
#### 打印消息
```json
// 方式1: Base64数据
{
"type": "print",
"fileType": "pdf",
"printer": "HP LaserJet",
"data": "\"base64编码的数据\""
}
// 方式2: 远程URL
{
"type": "print-url",
"fileType": "pdf",
"printer": "HP LaserJet",
"url": "https://example.com/document.pdf"
}
```
> 注意:使用 `print-url` 类型时,服务器会自动下载远程文件并打印。如果不指定 `fileType`,系统会自动检测文件类型。
#### 查询任务状态
```json
{
"type": "task",
"taskId": "abc123"
}
```
## 前端 SDK 使用
```html
```
## 项目结构
```
printer/
├── main.go # Wails 主入口
├── app.go # 应用逻辑
├── socket.go # WebSocket 服务
├── printer.go # 打印服务
├── utils.go # 工具函数
├── go.mod # Go 模块
├── wails.json # Wails 配置
├── Makefile # 构建脚本
├── frontend/ # Vue 前端
│ ├── src/
│ │ ├── App.vue
│ │ ├── main.js
│ │ └── style.css
│ ├── index.html
│ ├── vite.config.js
│ └── package.json
└── sdk/ # 前端 SDK
└── printer-sdk.js
```
## License
MIT