2014-04-16 75 views
3

好的,我使用的是PHP 5.4,我想直接從Web服務器打印到打印機。我正在使用PHP模塊php_printer.dll。PHP直接打印到本地/網絡打印機(卡在打印後臺處理程序中)

該功能運行良好。我看到在打印機隊列中,數據是,但在狀態掛起「發送到打印機」

這裏是代碼

 $printerList = printer_list(PRINTER_ENUM_LOCAL); 
     var_dump($printerList); 
     $printerName = $printerList[0]['NAME']; 
     echo $printerName; 
     $printer = $printerName; 
     if($ph = printer_open($printer)) { 
      $content = "hello"; 

      // Set print mode to RAW and send PDF to printer 
      printer_set_option($ph, PRINTER_MODE, "RAW"); 
      printer_write($ph, $content); 
      printer_close($ph); 
     } 
     else "Couldn't connect..."; 

有在Apache的屏幕或日誌文件中沒有任何錯誤,所以我假設PHP代碼運行良好。我看到數據在Windows打印後臺處理程序中。問題是它卡在那裏,它不能產生打印機的輸出。

我假設問題是因爲Windows權限問題(我使用的是Windows 8,在Windows 7或XP中測試也無法工作)。我有4臺測試打印機:1.惠普Laser Jet 401,2. PDF打印機,3. Windows傳真,4. XPS文件編寫器。

我的電腦無法打印到所有4臺打印機。我在其他電腦上測試,它可以打印到打印機號碼1,但其他打印機不能。

狀態只是「發送到打印機」。如果正在打印,狀態爲「假脫機」

我在截斷打印機上附加了截屏隊列數據。 Sent to printer status

這是截圖,成功後臺處理程序(我與打印正常,Ctrl + P鍵和打印測試)Spooling

任何幫助將不勝感激。謝謝!

+0

我很肯定你不能通過線軸。如果可以的話,如果在前一個打印完成之前開始打印作業會發生什麼?您最好研究爲什麼打印作業卡在卷軸中。 – GordonM

+0

嗨@GordonM,看到我的迴應如下 – Jef

回答

1

我得到了答案,問題是你必須在一開始

printer_start_doc($ph, "Start Doc"); 

而在此之前printer_close

printer_end_doc($ph); 

添加此沒有開始和結束的文檔無法打印。

我只是想知道爲什麼我仍然可以打印到其他計算機上的打印機號碼1,但不使用該開始和結束文檔PHP命令。

+0

謝謝!我也有這個問題...我會嘗試這個,如果它的工作。 :) –

+0

嗨jef!你會介意分享你的php_printer.dll,我環顧網絡,我沒有得到正確的DLL。我正在使用服務器Windows 7「wamp」PHP版本〜5.4.3。請jef。 –

+1

@AlexJohnSuarez:https://dropfile.to/XRUTI – Jef

相關問題