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

有什么 js 或者 PHP 直接调用打印机打印文件不预览的方法吗。

  •  
  •   ANEYE · 2020-11-18 22:47:06 +08:00 · 2047 次点击
    这是一个创建于 1470 天前的主题,其中的信息可能已经有所发展或是发生改变。

    做一个项目,服务器生成了一个 pdf 文件。现在由于保密要求,需要操作员直接点击一个按钮就把这个文件从打印机打印出来。而不能新开一个窗口看见这个 pdf 文件的内容,再点击打印,也不能预览打印的内容。有什么比较好的解决方案吗。

    10 条回复    2020-11-19 01:07:44 +08:00
    ccc008
        1
    ccc008  
       2020-11-18 23:07:46 +08:00
    操作员打印出来,直接拿起打印好的纸张不还是可以看到吗
    loading
        2
    loading  
       2020-11-18 23:10:56 +08:00 via Android
    打印到文件
    .prn

    这只能自欺欺人。
    Xusually
        3
    Xusually  
       2020-11-18 23:11:27 +08:00
    https://stackoverflow.com/questions/13045153/directly-print-with-php


    Now printing a PDF file is a totally different issue. You can print it via shell execution:

    shell_exec( 'lpr /path/to/file/filename.pdf' );
    Or with a PHP class found here:

    require_once( 'PrintIPP.php' );

    $ipp = new PrintIPP();
    $ipp->setHost( 'localhost' );
    $ipp->setPrinterURI( '/printers/epson' );
    $ipp->setData( '/path/to/file/filename.pdf' );

    $ipp->printJob();
    loading
        4
    loading  
       2020-11-18 23:11:53 +08:00 via Android
    建议使用端到端非对称加密,配合打印端用加密狗。
    yyss8
        5
    yyss8  
       2020-11-18 23:37:10 +08:00 via iPhone
    你要用浏览器打印基本没办法 只能走 chrome 的预览
    如果要不走那个直接调用打印机就只能本地架个 php 服务器 然后 php 直接调用打印机

    当然你还得解决打印的人不会拿起来看一眼
    ANEYE
        6
    ANEYE  
    OP
       2020-11-18 23:47:38 +08:00
    @ccc008
    @yyss8
    感谢 甲方的意思好像是打印机距离操作员很远 有专门的人收打印的文件
    ANEYE
        7
    ANEYE  
    OP
       2020-11-18 23:53:08 +08:00
    @Xusually
    @loading
    谢谢老哥,我研究研究
    Oceanhime
        8
    Oceanhime  
       2020-11-19 00:08:38 +08:00
    PHP 不能直接操作浏览器,即客户端的任何设备的,PHP 对硬件发起的任何动作都操作的是服务器,除非你要把 PHP 服务器搭建在操作员电脑里。
    然后就是如果必须要用 JavaScript 或者必须要使用浏览器内建打印,那就绕不过去浏览器自己的预览。

    所以 你可以像 #5 说的,在电脑里搭一个 PHP 服务端然后起 PHP 调用打印机
    或者可以写一个小脚本,浏览器端请求 localhost 特定端口,POST 发送文件,然后脚本调用打印。
    但是只要服务端需要回传给客户端文件,那客户端完全可以通过各种方式获取到想要的文件。除非进行加密,打印端还需要进行防护,这样就比较复杂了
    Ansonyi
        9
    Ansonyi  
       2020-11-19 00:12:28 +08:00
    Sunyanzi
        10
    Sunyanzi  
       2020-11-19 01:07:44 +08:00
    很简单啊 ... 我做过类似的项目 ...

    Web 服务器放公司走内网 ... 客户机连内网 Web 服务器 ... 服务器 USB 直连打印机 ...

    下打印指令的时候直接 Web 服务器后台把文件加入打印队列就好 ... 啥也不用给客户端传 ...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3361 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:05 · PVG 08:05 · LAX 16:05 · JFK 19:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.