2011-02-10 183 views
4

我無法使用php將網頁打印到網絡打印機。
但是,如果它是本地打印機,它可以工作。 我已經安裝php_printer.dll和在php.ini 以下啓用是代碼:使用php直接打印到網絡打印機使用php

//$handle = printer_open("Send To OneNote 2007"); ///This Works 

$handle = printer_open('\\\\192.168.0.8\\Canon MF4320-4350'); 
printer_set_option($handle, PRINTER_MODE, "RAW"); 
printer_write($handle, "TEXT To print"); 
printer_close($handle); 

它顯示了錯誤

警告:printer_write()[function.printer寫入]:於E無法分配的 的PrinterJob [5]:\服務器\ XAMPP \ htdocs中\亭\管理員\ print.php第16行

回答

1

嘗試使用任一「s的4 \或「s的3。例如:

$handle = printer_open("\\\\192.168.0.8\\Canon MF4320-4350"); 
// or 
$handle = printer_open('\\\192.168.0.8\Canon MF4320-4350'); 

此外,嘗試使用域名而不是IP(例如, computer-namefull.address.example.com)。

+0

嘗試了各種方法,但沒用。感謝您的回覆 – 2011-02-10 11:25:02

+0

嗯,這很奇怪,因爲php.net手冊頁上的評論似乎表明它可以正確地使用這些方法。 – 2011-02-10 11:29:06

0

看着那個字符串,就好像它可能是由反斜槓轉義出錯導致的。

調試提示:將您的網絡地址設置爲變量而不是直接在printer_open()中。然後使用print()或類似的顯示值。

<?php 
    $addr = '\\\\192.168.0.8\\Canon MF4320-4350'; 
    print $addr; 
    printer_open($addr); 
    ... 
?> 

這將讓你看到你看到什麼錯,更重要的是,你正在使用的字符串,這可能有助於價值,幫助您瞭解如何解決它。

希望有所幫助。

7

如果您使用命令行PHP(CLI),則可以使用網絡打印機進行打印。你的$ addr是正確的。

問題出在PHP與Apache結合後。在Windows中,您的php腳本將在用戶SYSTEM下運行。由於安全問題,SYSTEM的所有網絡資源都不可見。

要解決此問題,請創建一個具有管理員權限(或至少具有網絡資源可見性)的新用戶。在Windows中,如果您將Apache作爲服務運行,請單擊Apache Service Monitor中的SERVICE按鈕。在Apache 2.2下,右鍵單擊屬性。在「登錄」選項卡下,將用戶從SYSTEM更改爲新創建的用戶帳戶。重新啓動Apache。你應該能夠運行你的PHP腳本來打印到網絡打印機。

相關問題