✨ 主要优化成果: - 修复Unicode字符编码问题(Windows跨平台兼容性) - 安装wkhtmltoimage,截图功能完全修复 - 智能延迟优化(api_browser.py) - 线程池资源泄漏修复(tasks.py) - HTML解析缓存机制 - 二分搜索算法优化(kdocs_uploader.py) - 自适应资源配置(browser_pool_worker.py) 🐛 Bug修复: - 解决截图失败问题 - 修复管理员密码设置 - 解决应用启动编码错误 📚 新增文档: - BUG_REPORT.md - 完整bug分析报告 - PERFORMANCE_ANALYSIS_REPORT.md - 性能优化分析 - LINUX_DEPLOYMENT_ANALYSIS.md - Linux部署指南 - SCREENSHOT_FIX_SUCCESS.md - 截图功能修复记录 - INSTALL_WKHTMLTOIMAGE.md - 安装指南 - OPTIMIZATION_FIXES_SUMMARY.md - 优化总结 🚀 功能验证: - Flask应用正常运行(51233端口) - 数据库、截图线程池、API预热正常 - 管理员登录:admin/admin123 - 健康检查API:http://127.0.0.1:51233/health 💡 技术改进: - 智能延迟算法(自适应调整) - LRU缓存策略 - 线程池资源管理优化 - 二分搜索算法(O(log n) vs O(n)) - 自适应资源管理 🎯 项目现在稳定运行,可部署到Linux环境
2.4 KiB
2.4 KiB
安装wkhtmltoimage指南
🚨 问题诊断
截图功能失败是因为系统中缺少 wkhtmltoimage 命令。
$ which wkhtmltoimage
# 找不到命令
🔧 解决方案
方案1: Windows下安装wkhtmltoimage(推荐)
步骤1: 下载安装包
- 访问:https://wkhtmltopdf.org/downloads.html
- 下载Windows安装程序(通常是 .msi 文件)
- 运行安装程序,默认安装路径:
C:\Program Files\wkhtmltopdf\
步骤2: 添加到系统PATH
- 按
Win + R,输入sysdm.cpl,回车 - 点击"环境变量"
- 在"系统变量"中找到"Path",点击"编辑"
- 添加新路径:
C:\Program Files\wkhtmltopdf\bin - 点击"确定"保存
步骤3: 验证安装
wkhtmltoimage --version
应该显示版本信息。
方案2: 使用替代方案
选项A: 使用Playwright替代wkhtmltoimage
项目中已经有Playwright,我们可以修改截图实现使用Playwright。
选项B: 临时禁用截图功能
在环境变量中设置:
export ENABLE_SCREENSHOT=0
方案3: Docker环境(Linux/Mac)
如果使用Docker,Dockerfile中通常会包含wkhtmltoimage安装:
RUN apt-get update && apt-get install -y wkhtmltopdf
🧪 测试截图功能
安装完成后,重新测试:
# 1. 检查命令是否可用
wkhtmltoimage --version
# 2. 重新启动应用
python app.py
# 3. 在浏览器中测试截图功能
# 访问: http://127.0.0.1:51233/yuyx
# 进入截图页面测试
📊 当前截图配置
项目中的截图配置:
- 截图工具: wkhtmltoimage
- 默认参数:
- 宽度: 1920px
- 高度: 1080px
- 质量: 95%
- JS延迟: 3000ms
🔍 故障排除
问题1: 仍然找不到命令
解决: 确认PATH设置正确,重启命令行
问题2: 命令存在但截图失败
解决: 检查系统防火墙和权限设置
问题3: 中文页面截图乱码
解决: 安装中文字体包或设置字体环境变量
💡 推荐做法
- 优先选择方案1: 下载官方安装包,这是最稳定的方法
- 验证安装: 安装后一定要测试命令是否可用
- 重启应用: 安装完成后重启Flask应用
📞 后续支持
安装完成后,截图功能应该能正常工作。如果还有问题,请检查:
- 命令行是否能识别
wkhtmltoimage - 应用日志中的错误信息
- 系统权限和防火墙设置