ANEYE
V2EX  ›  问与答

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

  •  
  •   ANEYE · Nov 18, 2020 · 2984 views
    This topic created in 2013 days ago, the information mentioned may be changed or developed.

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

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

    这只能自欺欺人。
    Xusually
        3
    Xusually  
       Nov 18, 2020
    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  
       Nov 18, 2020 via Android
    建议使用端到端非对称加密,配合打印端用加密狗。
    yyss8
        5
    yyss8  
       Nov 18, 2020 via iPhone
    你要用浏览器打印基本没办法 只能走 chrome 的预览
    如果要不走那个直接调用打印机就只能本地架个 php 服务器 然后 php 直接调用打印机

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

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

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

    下打印指令的时候直接 Web 服务器后台把文件加入打印队列就好 ... 啥也不用给客户端传 ...
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3206 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 14:06 · PVG 22:06 · LAX 07:06 · JFK 10:06
    ♥ Do have faith in what you're doing.