V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
haython
V2EX  ›  问与答

怎么用 js 调用系统的打印机?

  •  
  •   haython · 2016-02-01 13:54:48 +08:00 · 9242 次点击
    这是一个创建于 3217 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想在网页里直接调用打印功能,不是使用浏览器的打印功能,比如使用 js 调用某个系统服务,系统服务去调用打印

    第 1 条附言  ·  2016-02-02 09:47:31 +08:00
    查到的结果,注册一个自定义协议,比如 myprinter://这种,点击 js 直接调用这种协议的地址,会调起对应的应用程序,可以传参数
    17 条回复    2016-03-21 15:45:44 +08:00
    kfll
        1
    kfll  
       2016-02-01 14:00:50 +08:00
    你需要一个全系列 IE 漏洞或 ActiveX + ppapi plugin + npapi plugin
    (大概
    FrankFang128
        2
    FrankFang128  
       2016-02-01 14:03:48 +08:00 via Android
    浏览器里的 JS 还能脱离浏览器?
    warlock
        3
    warlock  
       2016-02-01 14:04:27 +08:00
    很早以前用的 applet
    jugelizi
        4
    jugelizi  
       2016-02-01 14:06:17 +08:00
    https://www.v2ex.com/t/254625#reply7

    javascript 真的和 java 没任何关系

    js 在浏览器里能做的真的很少
    mkeith
        5
    mkeith  
       2016-02-01 14:08:48 +08:00
    系统服务做成 http server
    ljbha007
        6
    ljbha007  
       2016-02-01 14:14:35 +08:00
    或者学习百度 本地开个允许跨域的 http 服务器 然后调用服务器接口获取本地功能
    haython
        7
    haython  
    OP
       2016-02-01 14:14:58 +08:00
    @jugelizi 我当然知道 js 跟 java 没有关系,是已经离职的同事做的一个打印功能,用 c#做调用的打印机,页面上用 js 调用的 c#的,但是不知道怎么调用的 c#这块,据说是注册到注册表,弄成了服务
    jugelizi
        8
    jugelizi  
       2016-02-01 14:28:28 +08:00
    @haython 你这个自己用还是给客户用?
    cyberdak
        9
    cyberdak  
       2016-02-01 14:29:39 +08:00
    lodop
    haython
        10
    haython  
    OP
       2016-02-01 14:30:23 +08:00
    @jugelizi 自己用
    haython
        11
    haython  
    OP
       2016-02-01 14:30:51 +08:00
    @cyberdak 这个已经在用了,有些地方不好使
    gamexg
        12
    gamexg  
       2016-02-01 14:52:54 +08:00
    写成浏览器插件会有浏览器兼容性问题。

    最简单的办法是 C# 写一个 http 服务器(固定到一个端口), js ajax 调用(传递需要打印的 url ,可能需要带 cookie)。
    pein
        13
    pein  
       2016-02-01 16:32:54 +08:00
    js 的话估计只有 websocket 全双工通信,这样服务器可以直接给浏览器发打印信号,结合 lodop 就可以实现 js 打印。
    我最近做的一个项目,是网页外面套一个 C#的壳,实时监听是否有需要打印的数据,用户在网页产生操作后,后端语言向那个壳发送 socket 消息,然后壳接收到消息就打印出来。
    ipconfiger
        14
    ipconfiger  
       2016-02-01 16:35:08 +08:00
    js 只能通过浏览器
    xxdd
        15
    xxdd  
       2016-02-01 16:45:43 +08:00
    作为 JS 调用过打印机的来说几句:

    1.需要封装成插件 , 打包成 cab 包。里面包含 ocx dll 文件

    2.IE 浏览器安全性需要调低。

    3.JS 里面用 Object 对象引入 cab 包
    NemoAlex
        16
    NemoAlex  
       2016-02-01 16:50:01 +08:00
    https://github.com/tojocky/node-printer
    封装成 nw.js 的应用程序
    gkiwi
        17
    gkiwi  
       2016-03-21 15:45:44 +08:00
    之前打印餐馆小票用的这个: http://www.lodop.net/
    不过需要安装一个他家的驱动,这个避免不了~~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4328 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:06 · PVG 18:06 · LAX 02:06 · JFK 05:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.