我一直在寻找执行此操作所需的条件,结果有点困惑。
让我们弄清楚一件事,这是一个基于本地的内部网,我知道 PHP 是服务器端。
我在基于 PHP、JAVA、Jquery Idea 的 Web 上运行公司管理解决方案。我们想直接从“LINUX”服务器打印报告和收据等。
我已经在服务器上安装了 cups 并且服务器打印正常,我现在只是想知道是否真的可以让服务器打印我们直接从 PHP 代码生成的 pdf 文件。
即使我们有一个 bash 脚本来运行并检查目录打印 pdf 然后删除它,我也会很高兴,即使我暂时认为这是一种解决方法。
就像我说的那样,我明白如果这是在 WWW 上完成的,那么就会有某些漏洞可以被利用。如果我要在 www 上运行这个系统,我会得到一个完全不同的站点,它不允许打印,并且不需要这个功能。
提前谢谢你
亚历克斯
最佳答案
如果 CUPS 配置正确,从 shell 中打印 PDF 就像字面上一样简单
lpr myfile.pdf
因此,一旦您将 PDF 写入临时文件,就可以使用任何可用的 PHP 函数来执行该 shell 命令:exec()
、shell_exec()
, 系统()
您甚至可以在不编写临时文件的情况下通过 STDIN 将数据直接提供给 lpr
(尝试 cat myfile.pdf | lpr
作为 shell 上的示例) ).
如果您使用 proc_open()
运行程序,则可以将数据提供给 PHP 程序的 STDIN。第一个例子来自 PHP Manual可以适应这样的事情:
<?php
$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
);
$process = proc_open('lpr', $descriptorspec, $pipes);
if (is_resource($process)) {
// $pipes now looks like this:
// 0 => writeable handle connected to child stdin
// 1 => readable handle connected to child stdout
// Any error output will be appended to /tmp/error-output.txt
fwrite($pipes[0], $pdf_data);
fclose($pipes[0]);
}
?>
关于PHP 服务器端打印 Ubuntu 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11168116/