Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从浏览器触发扫描仪?_Javascript_Ruby On Rails_Paperclip_Image Scanner - Fatal编程技术网

Javascript 如何从浏览器触发扫描仪?

Javascript 如何从浏览器触发扫描仪?,javascript,ruby-on-rails,paperclip,image-scanner,Javascript,Ruby On Rails,Paperclip,Image Scanner,我有富士通fi-6130 TWAIN/ISIS扫描仪,我想通过jQuery Rails网页中的按钮触发它。我不仅想让页面告诉扫描仪“去”,还想在扫描(单个)页面后通过回形针上传生成的文件——理想情况下不需要用户导航文件浏览器小部件手动查找文件 每个扫描仪都通过usb连接到Windows XP桌面,不过我们可能会用谷歌Chrome操作系统替换这些呼叫中心桌面 这个问题几乎是一年前提出的,但主要是收到的建议要求使用商业IE.NET产品,成本高达数百美元-这不可能直接在标准HTML/js页面中实现-j

我有富士通fi-6130 TWAIN/ISIS扫描仪,我想通过jQuery Rails网页中的按钮触发它。我不仅想让页面告诉扫描仪“去”,还想在扫描(单个)页面后通过回形针上传生成的文件——理想情况下不需要用户导航文件浏览器小部件手动查找文件

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


这个问题几乎是一年前提出的,但主要是收到的建议要求使用商业IE.NET产品,成本高达数百美元-

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

很可能使用flash或silverlight,但怀疑您遇到了权限问题。有文章,但可能是a)涉及太多,b)不完全是你想要的

如果您控制web应用程序将在其上运行的计算机,我建议使用一个简单的桌面客户端来执行扫描,并通过打开本地端口允许从网页内连接到它

因此js对(比如)执行AJAX调用,该调用返回一个图像

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

在评论中,您表示不喜欢Visual Studio—因此,如果您熟悉Java,我建议您看看(商业版,但质量似乎不错)或开始阅读。注意:我不是一个经常使用java的开发人员,所以我不能保证以上两个都是您所需要的


除此之外,我建议C++使用不同的IDE(虽然这不是OS无关)

,可以使用一个签名的applet,使用一个像MMS计算的库。
您可以在的代码库中的小程序中看到它的使用。

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

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


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

如@Basic所述,可用于创建此类解决方案。事实上,JTwain的开发者已经创建了。为了在网页中使用它,您需要:

包括scanner.js:

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

实际上,您可以使用我的应用程序(仅适用于windows)


浏览器与扫描仪的接口实际上是不可能的(darn)。让用户自己扫描图像并上传。在浏览器中与扫描仪交谈的一种方式是通过ActiveX控件(IE)或浏览器插件(Firefox、Chrome)。据我所知,目前还没有这样的开源SDK。与其白手起家,不如花几百美元。twain是扫描仪驱动程序最流行的协议,它很难破解,允许您从Windows或Mac OS上的浏览器调用扫描仪。它也是一个商业软件包。配置为将扫描仪api的一个子集代理为web服务的程序可能已经编写了不止几次了。。。事实上,我很惊讶扫描仪供应商没有为流行的台式机提供扫描仪。我敢打赌,高端扫描仪的大部分客户都想要它。有人知道一个现成的吗?我不知道,但现在我想写一个:)我通过电子邮件、聊天和电话联系了富士通。他们对任何桌面操作系统都没有这样的实用程序,尽管我确保他们注意到了我的请求,并建议他们直接回答这个问题。我更喜欢用我熟悉的语言编写一个用于监听套接字中继的扫描仪,但Ruby和Python必须在Windows上分别安装。C++程序必须在该死的Visual Studio中生成。从呼叫中心支持的角度来看,本地windows脚本语言会更好,但我不知道。然后,只要我们使用Windows,代理就可以工作。嗨@Lamar,没问题。有许多选择。在最基本的层面上,您需要打开一个网络端口并开始监听流量。这可能是打开一个套接字,监听网络流量,或者找到一个现成的服务器。Windows通信基金会(WCF)是框架的一部分,功能强大,但配置相当复杂。对于这样简单的东西(一个或两个方法,用于获取扫描/配置),并且不需要太多的灵活性,您可以从以下内容开始:[链接更新]@Lamar[或者我可能误解了您的wuestion-备选答案]:AJAZ请求只是您请求页面的连接。“Localhost”是本地计算机,因此
http://localhost:10000
表示“向本地计算机上的端口10000发送HTTP请求”。因此,您的工作是编写一个程序,侦听端口10000上的连接,然后读取javascript发送的请求(AJAX请求),然后提供适当的响应。它是scanner.js,该软件可免费用于非常低级的基本用途。“事实上,JTwain的开发人员创建了…”你为什么用第三人称谈论你自己?我在他们的网站上看不到免费版本:我们如何尝试?请在回答中提到你正在销售你的商业解决方案。这个线程不是关于scanner.js的。太贵了,我的意思是我有一个应用程序需要安装在多个服务器上。如果我使用Dynamic的解决方案,我最终会在扫描部分上的花费超过
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
        }
    }
]
}

    );
    }