# windows-printer-plugin **Repository Path**: xmqhit/windows-printer-plugin ## Basic Information - **Project Name**: windows-printer-plugin - **Description**: Windows跨平台打印插件 - 支持多种打印方式、WebSocket实时通信、多语言SDK - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-30 - **Last Updated**: 2026-02-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Windows打印插件 🖨️ [![Node.js](https://img.shields.io/badge/Node.js-18%2B-green.svg)](https://nodejs.org/) [![Windows](https://img.shields.io/badge/Windows-10%2F11-blue.svg)](https://www.microsoft.com/windows/) [![PowerShell](https://img.shields.io/badge/PowerShell-5.1%2B-blue.svg)](https://docs.microsoft.com/powershell/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) 现代化的Windows跨平台打印插件,支持多种打印方式和完整的Windows服务集成。 ## ✨ 核心特性 ### 🖨️ 多样化打印支持 - **文件路径打印** - 直接打印本地文件 - **文件上传打印** - 通过Web界面上传并打印 - **Base64流打印** - 支持数据流直接打印 - **网络URL打印** - 打印网络文件资源 - **Java后端集成** - 完整的后端API支持 ### 📄 广泛格式支持 - **文档格式**: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX - **图像格式**: JPG, JPEG, PNG, BMP, GIF, TIFF - **文本格式**: TXT, RTF, HTML - **其他格式**: 支持系统默认打印程序的所有格式 ### ⚙️ 完整打印控制 - **纸张设置**: A4, A3, Letter, Legal等标准纸张 - **打印质量**: 草稿、标准、高质量模式 - **颜色模式**: 黑白、彩色打印控制 - **双面打印**: 支持单面/双面打印设置 - **页面布局**: 纵向/横向、缩放、边距控制 ### 🔌 现代化集成 - **Windows服务**: 开机自动启动,系统级服务 - **WebSocket通信**: 实时状态推送和事件通知 - **RESTful API**: 完整的HTTP API接口 - **多语言SDK**: Python, Java, C#, Go等语言支持 ## 🚀 快速开始 ### 系统要求 - **操作系统**: Windows 10 (1909+) 或 Windows 11 - **Node.js**: 18.0+ (推荐使用LTS版本) - **PowerShell**: 5.1+ (Windows 10/11内置) - **权限**: 管理员权限(仅安装时需要) ### 一键安装 #### 方法1: 使用Windows Terminal (推荐) ```powershell # 1. 以管理员身份打开Windows Terminal # 2. 克隆项目 git clone https://gitee.com/xmqhit/windows-printer-plugin.git cd windows-printer-plugin # 3. 运行一键安装 .\scripts\windows\直接安装Windows服务.bat ``` #### 方法2: 使用winget安装Node.js ```powershell # 安装Node.js (如果未安装) winget install OpenJS.NodeJS.LTS # 安装项目依赖 npm install # 安装Windows服务 node scripts\service\final-service-install.js ``` ### 验证安装 ```powershell # 检查服务状态 Get-Service -Name "WindowsPrinterPlugin" # 测试API Invoke-RestMethod -Uri "http://localhost:3001/api/health" # 运行完整测试 .\tools\testing\test-api-chinese.bat ``` ## 📖 使用指南 ### API接口示例 #### 健康检查 ```bash GET http://localhost:3001/api/health ``` #### 获取打印机列表 ```bash GET http://localhost:3001/api/printers ``` #### 文件路径打印 ```bash POST http://localhost:3001/api/print/path Content-Type: application/json { "filePath": "C:\\Documents\\document.pdf", "printerName": "Microsoft Print to PDF", "options": { "paperSize": "A4", "colorMode": "color", "duplex": false } } ``` #### 文件上传打印 ```bash POST http://localhost:3001/api/print/upload Content-Type: multipart/form-data file: [选择文件] printerName: "Microsoft Print to PDF" options: {"paperSize": "A4"} ``` ### WebSocket实时通信 ```javascript const socket = io('http://localhost:3001'); // 连接成功 socket.on('connected', (data) => { console.log('连接成功:', data); }); // 订阅打印事件 socket.emit('subscribe', { events: ['printJobStarted', 'printJobCompleted'] }); // 监听打印任务开始 socket.on('printJobStarted', (data) => { console.log('打印任务开始:', data); }); ``` ## 🛠️ 服务管理 ### 使用图形化工具 ```powershell # 打开服务管理工具 .\scripts\windows\服务管理工具.bat ``` ### 使用PowerShell命令 ```powershell # 查看服务状态 Get-Service -Name "WindowsPrinterPlugin" # 启动服务 Start-Service -Name "WindowsPrinterPlugin" # 停止服务 Stop-Service -Name "WindowsPrinterPlugin" # 重启服务 Restart-Service -Name "WindowsPrinterPlugin" ``` ### 使用传统SC命令 ```cmd # 查看服务状态 sc query WindowsPrinterPlugin # 启动服务 sc start WindowsPrinterPlugin # 停止服务 sc stop WindowsPrinterPlugin ``` ## 🌍 多语言SDK ### Python客户端 ```python from printer_client import PrinterClient client = PrinterClient('http://localhost:3001') # 获取打印机列表 printers = client.get_printers() # 打印文件 result = client.print_file( file_path='document.pdf', printer_name='Microsoft Print to PDF', options={'paperSize': 'A4', 'colorMode': 'color'} ) ``` ### Java客户端 ```java PrinterClient client = new PrinterClient("http://localhost:3001"); // 获取打印机列表 List printers = client.getPrinters(); // 打印文件 PrintResult result = client.printFile( "document.pdf", "Microsoft Print to PDF", new PrintOptions().paperSize("A4").colorMode("color") ); ``` ### C#客户端 ```csharp var client = new PrinterClient("http://localhost:3001"); // 获取打印机列表 var printers = await client.GetPrintersAsync(); // 打印文件 var result = await client.PrintFileAsync( "document.pdf", "Microsoft Print to PDF", new PrintOptions { PaperSize = "A4", ColorMode = "color" } ); ``` ## 📊 高级功能 ### 批量打印 ```bash POST http://localhost:3001/api/print/batch Content-Type: application/json { "files": [ {"path": "file1.pdf", "options": {"paperSize": "A4"}}, {"path": "file2.pdf", "options": {"paperSize": "A3"}} ], "printerName": "Microsoft Print to PDF" } ``` ### 打印预览 ```bash POST http://localhost:3001/api/print/preview Content-Type: application/json { "filePath": "document.pdf", "options": {"paperSize": "A4"} } ``` ### 打印统计 ```bash GET http://localhost:3001/api/statistics?period=today ``` ## 🔧 配置和自定义 ### 环境变量配置 ```powershell # 设置端口 $env:PORT = "3001" # 设置日志级别 $env:LOG_LEVEL = "info" # 设置工作目录 $env:WORK_DIR = "C:\PrinterPlugin" ``` ### 配置文件 编辑 `config/config.js`: ```javascript module.exports = { port: process.env.PORT || 3001, logLevel: process.env.LOG_LEVEL || 'info', maxFileSize: '50mb', supportedFormats: ['.pdf', '.jpg', '.png', '.doc', '.docx'], defaultPrinter: 'Microsoft Print to PDF' }; ``` ## 🐛 故障排除 ### 常见问题 #### 服务无法启动 ```powershell # 检查Node.js版本 node --version # 检查依赖 npm list # 查看详细错误 Get-WinEvent -LogName Application -MaxEvents 10 ``` #### 端口被占用 ```powershell # 检查端口占用 Get-NetTCPConnection -LocalPort 3001 # 终止占用进程 Stop-Process -Id -Force ``` #### 权限问题 ```powershell # 以管理员身份运行PowerShell Start-Process powershell -Verb RunAs # 检查服务权限 Get-Service -Name "WindowsPrinterPlugin" | Format-List * ``` ### 诊断工具 ```powershell # 运行完整诊断 .\tools\testing\test-api-chinese.bat # 检查服务状态 .\scripts\windows\check-service.bat # 查看实时日志 Get-Content -Path "logs\combined.log" -Tail 20 -Wait ``` ## 📚 文档和资源 ### 完整文档 - [现代化安装指南](docs/installation/MODERN-WINDOWS-INSTALL-GUIDE.md) - [API接口文档](docs/api/README.md) - [多语言SDK文档](sdk/README.md) - [故障排除指南](docs/installation/TROUBLESHOOTING.md) ### 示例代码 - [基础使用示例](examples/) - [WebSocket示例](examples/websocket-demo.html) - [Java后端集成](examples/java-backend-example.js) - [高级功能演示](examples/advanced-features-example.html) ### 开发资源 - [项目仓库](https://gitee.com/xmqhit/windows-printer-plugin) - [问题反馈](https://gitee.com/xmqhit/windows-printer-plugin/issues) - [更新日志](CHANGELOG.md) ## 🤝 贡献指南 欢迎贡献代码和建议!请查看 [贡献指南](CONTRIBUTING.md) 了解详情。 ### 开发环境设置 ```powershell # 克隆仓库 git clone https://gitee.com/xmqhit/windows-printer-plugin.git cd windows-printer-plugin # 安装依赖 npm install # 启动开发服务器 npm run dev # 运行测试 npm test ``` ## 📁 项目结构 ``` windows-printer-plugin/ ├── 📁 src/ # 源代码 │ ├── index.js # 主服务文件 │ ├── services/ # 服务层 │ │ ├── CrossPlatformPrinterService.js # 跨平台打印服务 │ │ └── PrinterService.js # 基础打印服务 │ └── utils/ # 工具类 │ └── logger.js # 日志工具 ├── 📚 docs/ # 文档 │ ├── installation/ # 安装指南 │ │ ├── MODERN-WINDOWS-INSTALL-GUIDE.md # 现代化安装指南 │ │ ├── WINDOWS-SERVICE-FINAL-SUCCESS.md # 服务安装成功报告 │ │ └── TROUBLESHOOTING.md # 故障排除 │ ├── features/ # 功能文档 │ └── project-management/ # 项目管理 ├── 🔧 scripts/ # 脚本工具 │ ├── windows/ # Windows脚本 │ │ ├── 服务管理工具.bat # 服务管理界面 │ │ ├── 直接安装Windows服务.bat # 一键安装 │ │ └── check-service.bat # 状态检查 │ └── service/ # 服务管理脚本 │ ├── final-service-install.js # 最终安装脚本 │ ├── powershell-service-install.js # PowerShell安装 │ └── nssm-service-install.js # NSSM安装 ├── 💡 examples/ # 示例代码 │ ├── websocket-demo.html # WebSocket演示 │ ├── java-backend-example.js # Java后端集成 │ └── advanced-features-example.html # 高级功能演示 ├── 🌍 sdk/ # 多语言SDK │ ├── python/ # Python SDK │ ├── java/ # Java SDK │ ├── csharp/ # C# SDK │ └── go/ # Go SDK ├── 🧪 test/ # 测试文件 ├── ⚙️ config/ # 配置文件 └── 📋 logs/ # 日志文件 ``` ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🙏 致谢 感谢所有贡献者和用户的支持! --- **Windows打印插件** - 让Windows打印更简单、更现代化! 🚀