【2024.2.26更新】基于SANE实现OpenWrt打印服务器的移动扫描功能_百度...
发布网友
发布时间:2024-10-08 14:31
我来回答
共1个回答
热心网友
时间:2024-10-13 22:30
前言
重新覆写了代码,以改进之前实现的移动扫描功能界面。在实现中,选择了使用SANE协议来优化扫描服务器,以提供更好的移动端用户体验。
之前的相关文章
总结了基于SANE成功解决路由器改OpenWrt打印扫描服务器的手机移动端(IOS、Android)扫描功能实现问题。
记录了在windows10环境下配置go开发环境及热加载Air框架的设置。
详细描述了实现openwrt打印扫描服务器移动端扫描的配置服务文件。
回顾了对TP-LINK-TL-WR703N(原装)制作打印服务器过程的整理。
SANE协议简介
SANE(Scanner Access Now Easy)是一个应用程序编程接口(API),它为任何光栅图像扫描仪硬件提供标准化访问。此API适用于平板扫描仪、手持式扫描仪、视频和静止相机、图像采集卡等设备。SANE API在公共领域,采用GNU通用公共许可证,适用于专有应用程序和后端。它简化了访问各种扫描仪硬件,并减少了开发时间与代码重复。SANE支持Unix系统,对于路由器这类小型设备来说,这使得其功能非常适用。
代码重构
通过修改gyscos编写的RemoteScanViewer项目,重新实现了移动扫描端界面。尽管原项目功能正常,但界面设计和HTML前端引入CDN链接存在一些问题。因此,决定重写代码以提高用户体验。
代码结构与技术栈
前端采用原生HTML,并引入了ICEUI-HTML5前后端框架来实现UI组件。后端使用Golang语言及gin框架搭建。通信通过本地文件引入的axios.js完成。
执行扫描的实现方法
主要通过调用SANE命令行工具scanimage来实现扫描功能。对比了go-sane包,但由于其使用cgo导致跨平台编译复杂,最终选择了使用scanimage命令行工具。
编译工具
使用了liteide IDE进行代码编译,并注意了在跨平台编译时关闭cgo功能(CGO_ENABLED等于0)。
前端组件库
ICEUI-HTML5前后端框架提供了足够的UI组件支持,尽管在移动端显示时遇到了导航菜单布局问题,但在其他方面表现良好。
最终效果
展示了一个打印和扫描一体项目的初步实现,包括空白的首页、扫描页、扫描文件效果、扫描文件详情页以及基于PDF.js的文件预览功能。