我正在使用PHP获取连接到我的Xubuntu linux机器的活动打印机列表,然后创建一个只显示在线打印机的阵列。我想使用这个数组以编程方式确定哪个打印机可用于打印。
为了实现这一目标,我在PHP中调用
lpstat -p -d
这给出了回复:
printer DYMO-LabelWriter-400-Turbo-1 disabled since Fri 26 Jul 2013 10:45:50 AM UTC -
Unable to send data to printer.
printer DYMO-LabelWriter-400-Turbo-2 is idle. enabled since Mon 04 Nov 2013 04:30:57 AM UTC
printer Samsung-SCX-4200 is idle. enabled since Wed 10 Jul 2013 11:30:49 AM UTC
system default destination: DYMO-LabelWriter-400-Turbo-1
但是,此列表不正确。在运行呼叫时,上述打印机均未实际连接。如果可以使用打印机,有没有办法探测?
编辑: 这是我使用的代码:
function getActivePrinters() {
$o = shell_exec("lpstat -d -p");
$res = explode("\n", $o);
$i = 0;
foreach ($res as $r) {
$active = 0;
if (strpos($r, "printer") !== FALSE) {
$r = str_replace("printer ", "", $r);
if (strpos($r, "is idle") !== FALSE)
$active = 1;
$r = explode(" ", $r);
$printers[$i]['name'] = $r[0];
$printers[$i]['active'] = $active;
$i++;
}
}
return $printers;
}