【2024.2.26更新】基于SANE实现OpenWrt打印服务器的移动扫描功能

有没有人在啊,想请分析下,【2024.2.26更新】基于SANE实现OpenWrt打印服务器的移动扫描功能
最新回答
宅m

2024-10-31 09:43:28

前言

重新覆写了代码,以改进之前实现的移动扫描功能界面。在实现中,选择了使用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的文件预览功能。