【问题标题】:How Can I Trigger a Scanner from a Browser?如何从浏览器触发扫描程序?
【发布时间】:2011-03-31 01:46:26
【问题描述】:

我有 Fujitsu fi-6130 TWAIN / ISIS 扫描仪,我想从 jQuery Rails 网页中的按钮触发。我不仅想让页面告诉扫描仪“开始”,我还想在扫描(单个)页面后通过 Paperclip 上传生成的文件 - 理想情况下不需要用户导航文件资源管理器小部件到手动查找文件。

每个扫描仪都通过 USB 连接到 Windows XP 桌面,但我们可能会用 Google Chrome 操作系统替换这些呼叫中心桌面。

这个问题是大约一年前提出的,但主要收到的建议是需要使用数百美元的商业 IE .NET 产品 - Interfacing with the end-user's scanner from a webapp (web/scanner integration)

【问题讨论】:

  • 实际上不可能将浏览器与扫描仪接口(该死)。让用户自己扫描图像并上传。
  • 在浏览器中与扫描仪对话的一种方法是通过 ActiveX 控件 (IE) 或浏览器插件(Firefox、Chrome)。据我所知,那里没有这样的开源 SDK。花几百美元比从头开始更好。 twain 是最流行的扫描仪驱动协议,而且很难破解
  • scanner.js 允许您从 Windows 或 Mac OS 上的浏览​​器调用扫描程序。这也是一个商业包。

标签: javascript ruby-on-rails paperclip image-scanner


【解决方案1】:

这是不可能直接在标准 HTML/js 页面中实现的 - js 无权访问扫描仪等外围设备。

很可能使用闪光灯或silverlight,但怀疑您会遇到权限问题。有文章 herehere 但它可能是 a) 过于复杂 b) 不是你所追求的。

如果您控制运行 Web 应用程序的机器,我建议使用简单的桌面客户端执行扫描,并通过打开本地端口允许从网页内连接到它

所以 js 对(比如)http://localhost:1234/Services/Scan 进行 AJAX 调用,返回图像

编辑:关于编写桌面客户端,您有很多选择。我个人建议您不要尝试在 PERL/PHP 中执行此操作,因为它们似乎不是适合这项工作的工具,而且我怀疑您最终会加载 COM 对象以尝试访问 TWAIN 设备(我们都知道这有多有趣……)

在 cmets 中,您表示您不喜欢 Visual Studio - 因此,如果您熟悉 Java,我建议您查看 JTwain(商业但似乎质量不错)或开始阅读here。注意:我不是频繁的 Java 开发人员,所以不能保证以上任何一个都是您所需要的。

除此之外,我建议 C++ 使用不同的 IDE(尽管这不会与操作系统无关)

【讨论】:

  • 配置为将扫描仪 api 的子集作为 Web 服务进行代理的程序可能已经编写了多次...事实上,我很惊讶扫描仪供应商没有为流行的台式机提供一个。我敢打赌,高端扫描仪的大部分客户都想要它。有人知道现成的吗?
  • 我没有,但现在我很想写一个:)
  • 我通过电子邮件、聊天和电话联系了富士通。他们对任何桌面操作系统都没有这样的实用程序,尽管我确保他们注意到了我的请求,并建议他们直接回复这个 Stackoverflow 问题。我更喜欢用我熟悉的语言编写一个扫描仪到监听套接字中继,但是 Ruby 和 Python 必须在 Windows 上单独安装。 C++ 程序必须在该死的 Visual Studio 中生成。从呼叫中心支持的角度来看,本机 Windows 脚本语言会更好,但我不知道。然后代理只有在我们使用 Windows 时才能工作。
  • 嗨@Lamar,没问题。有很多选择。在最基本的层面上,您需要打开一个网络端口并开始监听流量。这可能是打开一个套接字并监听网络流量,或者找到一个现成的服务器。 Windows Communication Foundation (WCF) 是框架的一部分,确实功能强大,但配置起来相当复杂。对于这种简单的事情(一两种方法,获取扫描/配置)并且不需要太多灵活性,您可以从以下内容开始:codeproject.com/Articles/137979/Simple-HTTP-Server-in-C [链接更新]
  • @Lamar [或者我可能误解了您的观点-替代答案]:AJAZ 请求只是您请求页面的连接。 “Localhost”是本地计算机,因此http://localhost:10000 表示“向本地计算机上的端口 10,000 发送 HTTP 请求”。所以你的工作是编写一个程序来监听 10000 端口上的连接,然后读取你的 javascript 发送的请求(AJAX 请求),然后提供适当的响应。
【解决方案2】:

有一个名为Dynamic Web TWAIN from Dynamsoft 的解决方案提供了一个基于浏览器的 TWAIN SDK,用于从 TWAIN 设备获取图像,并对其进行编辑和保存到远程数据库。

【讨论】:

  • 太贵了,我的意思是我有一个应用程序需要安装在多台服务器上。如果我选择 Dynamic 的解决方案,我最终会花费在扫描部分而不是整个应用程序本身上。
  • 请在某处提及您在回答中销售您的商业解决方案。
【解决方案3】:

正如@Basic 提到的,JTwain 可用于创建这样的解决方案。事实上,JTwain 的开发者已经创建了ScannerJS that allows one to scan directly from browsers like IE, Chrome and Firefox using JavaScript。为了在您的网页中使用它,您需要:

包括scanner.js:

<html lang="en"><head>
<script src="//asprise.azureedge.net/scannerjs/scanner.js" type="text/javascript"></script>

并致电scanner.scan:

function scanToWebPageAndUploadToWebServer() {
   scanner.scan(displayImagesOnPage,
{
"twain_cap_setting": {
    "ICAP_PIXELTYPE": "TWPT_GRAY",
    "ICAP_XRESOLUTION": "200",
    "ICAP_YRESOLUTION": "200"
},
"prompt_scan_more": true,
"discard_blank_pages": "false",
"blank_page_threshold": "0.02",
"output_settings": [
    {
        "type": "return-base64-thumbnail",
        "format": "jpg",
        "thumbnail_height": 200
    },
    {
        "type": "upload",
        "format": "pdf",
        "pdf_force_black_white": "false",
        "pdfa_compliant": "false",
        "pdf_text_line": "By ${USERNAME} on ${DATETIME}",
        "exif": {
            "DocumentName": "Doc Scan Powered by Asprise.com",
            "UserComment": "Scanned using Asprise software"
        },
        "upload_target": {
            "url": "https://asprise.com/scan/applet/upload.php?action=dump",
            "max_retries": 2,
            "post_fields": {
                "provider": "Asprise"
            },
            "cookies": "name=Asprise; domain=asprise.com",
            "auth": "user:pass",
            "headers": [
                "Referer: http://asprise.com"
            ],
            "log_file": "null",
            "max_operation_time": 600
        }
    }
]
}

    );
    }

【讨论】:

  • 是scanner.js,该软件对于非常低级的基本用途是免费的。
  • “事实上,JTwain 的开发者已经创造了……”你有什么理由用第三人称谈论自己?
  • 我在他们的网站上看不到免费版本:asprise.com/document-scan-upload-image-browser/…我们如何试用?
  • 请在某处提及您在答案中销售您的商业解决方案。该线程与scanner.js 无关。
【解决方案4】:

您可以使用已签名的小程序,使用 MMS 计算之类的库。 您可以在OpenKM 代码库中的小程序中看到它的使用情况。

【讨论】:

    【解决方案5】:

    似乎有一个可用于富士通 fi 系列扫描仪的 Web API 工具包。 它基本上是您安装在客户端计算机上的应用程序,扫描仪通过 JSON 或 Silverlight 接受调用并将它们发送到扫描仪驱动程序。

    http://uk.emc.com/enterprise-content-management/captiva/cloud-toolkit.htm

    我刚刚下载了它并且正在阅读文档,所以不能保证它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 2023-04-07
      相关资源
      最近更新 更多