V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
displayabc
V2EX  ›  问与答

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

  •  
  •   displayabc · Feb 1, 2016 · 9708 views
    This topic created in 3738 days ago, the information mentioned may be changed or developed.

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

    Supplement 1  ·  Feb 2, 2016
    查到的结果,注册一个自定义协议,比如 myprinter://这种,点击 js 直接调用这种协议的地址,会调起对应的应用程序,可以传参数
    17 replies    2016-03-21 15:45:44 +08:00
    kfll
        1
    kfll  
       Feb 1, 2016
    你需要一个全系列 IE 漏洞或 ActiveX + ppapi plugin + npapi plugin
    (大概
    FrankFang128
        2
    FrankFang128  
       Feb 1, 2016 via Android
    浏览器里的 JS 还能脱离浏览器?
    warlock
        3
    warlock  
       Feb 1, 2016
    很早以前用的 applet
    jugelizi
        4
    jugelizi  
       Feb 1, 2016
    https://www.0.51bbc.workers.dev/t/254625#reply7

    javascript 真的和 java 没任何关系

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

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

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

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

    3.JS 里面用 Object 对象引入 cab 包
    NemoAlex
        16
    NemoAlex  
       Feb 1, 2016
    https://github.com/tojocky/node-printer
    封装成 nw.js 的应用程序
    gkiwi
        17
    gkiwi  
       Mar 21, 2016
    之前打印餐馆小票用的这个: http://www.lodop.net/
    不过需要安装一个他家的驱动,这个避免不了~~
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3197 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 14:15 · PVG 22:15 · LAX 07:15 · JFK 10:15
    ♥ Do have faith in what you're doing.