# lan-printer **Repository Path**: rikh/lan-printer ## Basic Information - **Project Name**: lan-printer - **Description**: 局域网共享打印服务。把Windows电脑变成打印服务器,同局域网内浏览器提交即可打印,无需安装驱动。Flask + pystray + ShellExecute。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2026-07-28 - **Last Updated**: 2026-10-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: 共享服务 ## README # 🖨️ 局域网共享打印服务 — 使用说明 ## 是什么 把任意一台 Windows 电脑变成"打印服务器"。同局域网内的其他电脑/手机,打开浏览器就能提交打印任务,无需安装驱动、无需共享设置、无需来回插 U 盘。 --- ## 工作原理 ``` ┌─────────────┐ ┌─────────────────┐ ┌──────────┐ │ 同事A 浏览器 │ ──→ │ 本程序(打印主机) │ ──→ │ 打印机 │ │ 同事B 浏览器 │ ──→ │ http://IP:5000 │ ──→ │ │ │ 手机 浏览器 │ ──→ │ │ ──→ │ │ └─────────────┘ └─────────────────┘ └──────────┘ ``` --- ## 部署(打印主机上操作) ### 前提条件 - Windows 10 / 11 - 打印机已连接并安装好驱动(能在本机正常打印) ### 方式一:一键启动(推荐) 1. 复制整个 `lan_printer` 文件夹到本机(桌面即可) 2. 双击 `start.bat` 3. 首次运行会自动安装依赖(1~2 分钟),之后秒开 4. 启动后图标缩进右下角系统托盘 ✅ 完成 ### 方式二:打包成 EXE(无需安装 Python) 1. 复制整个 `lan_printer` 文件夹到本机 2. 双击 `build.bat` 等待编译(2~5 分钟) 3. 进入 `dist` 文件夹,里面有 `lan_printer.exe` 4. 把 `dist` 文件夹复制到任意电脑,双击 `lan_printer.exe` 即可 5. 无任何窗口——右下角托盘图标就是它 > ⚠️ 部分杀毒软件(卡巴斯基)可能误报 PyInstaller 打包的 EXE,添加白名单即可,绝对安全。 --- ## 使用(局域网内任意设备操作) ### 步骤一:获取地址 - 在打印主机右下角托盘图标右键 → 查看服务地址 - 或者直接问打印主机的人要 IP ### 步骤二:浏览器打开 地址栏输入 `http://打印主机IP:5000` 例如:`http://192.168.1.100:5000` ### 步骤三:选择打印机 → 上传文件 → 打印 1. 下拉选择打印机(自动列出本机所有打印机) 2. 点击上传文件 3. 点「提交打印任务」 4. 看到绿色 ✅ 就是成功了 ### 支持的文件格式 | 类型 | 格式 | |:--|:--| | 文档 | `.txt` `.doc` `.docx` | | 表格 | `.xls` `.xlsx` | | 幻灯片 | `.ppt` `.pptx` | | PDF | `.pdf` | | 图片 | `.jpg` `.jpeg` `.png` | --- ## 托盘菜单功能 右键右下角打印机图标: | 菜单项 | 功能 | |:--|:--| | **Service URL** | 显示服务地址,点击复制到剪贴板 | | **Open Web Interface** | 用默认浏览器打开打印页面 | | **Start with Windows** | 勾选后开机自动启动(写注册表) | | **Exit** | 退出服务 | > 开机自启:勾上后重启电脑也会自动运行。取消勾选即关闭。 --- ## 常见问题 ### Q: 打印没反应 / 报错? A: 按顺序检查: 1. 打印主机本机能不能正常打印?先测试一下 2. 打印机是否开机、连线正常? 3. 重新启动本服务试试 ### Q: 浏览器打不开网页? A: - 确认打印主机和访问设备在同一个局域网(连同一个 WiFi/路由器) - 检查打印主机防火墙是否拦截了 5000 端口 - 试着在打印主机本机浏览器打开 `http://127.0.0.1:5000` ### Q: 卡巴斯基报毒? A: PyInstaller 打包的 EXE 行为特征和木马加壳类似,是误报。将 `lan_printer.exe` 加入卡巴斯基排除列表即可。或者不打包,直接用 `start.bat` 跑 Python 版。 ### Q: WPS 弹窗提示"不是一个有效的文件"? A: 如果遇到这种情况,重启一下本服务即可。新版已修复此问题。 ### Q: 怎样更换端口? A: 编辑 `app.py`,修改 `PORT = 5000` 为其他数字(如 8080),重启服务。 --- ## 文件说明 ``` lan_printer/ ├── app.py # Web 服务核心代码 ├── main.py # 系统托盘 + 启动入口 ├── start.bat # 一键启动脚本(需 Python) ├── build.bat # 打包 EXE 脚本 ├── launch.vbs # 静默启动(系统 Python) ├── launch_venv.vbs # 静默启动(venv 环境) ├── requirements.txt # Python 依赖列表 ├── lan_printer.spec # PyInstaller 打包配置 ├── templates/ │ └── index.html # Web 页面模板 └── uploads/ # 上传临时文件(自动清理) ```