Print directly to network printer using php

30,177

Solution 1

If you used the command line PHP (CLI) the printing to network printers would work. Your $addr is correct by the way.

The issue lies with PHP when you combine it with Apache. In windows, your php scripts would run under the user SYSTEM. Because of security concerns, all network resources are not visible to SYSTEM.

To resolve this problem, create a new user with admin privileges (or at least with Network Resource visibility). In Windows, if you run Apache as a service, click on the SERVICE button in the Apache Service Monitor. Under Apache 2.2, right click on properties. Under the LOGIN tab, change the user from SYSTEM to your newly created user account. Restart Apache. You should be able to run your PHP script to print to network printers now.

Solution 2

Try using either "s with 4\ or 's with 3. eg:

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

Also, try using a domain name rather than IP (eg. computer-name or full.address.example.com).

Share:
30,177
Ullas Prabhakar
Author by

Ullas Prabhakar

Updated on July 05, 2022

Comments

  • Ullas Prabhakar
    Ullas Prabhakar almost 2 years

    I am unable to print a page to a network printrer using php.
    But this works if it is a local printer. I have installed php_printer.dll and enabled in php.ini The following is the code:

    //$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);
    

    It shows the error

    Warning: printer_write() [function.printer-write]: couldn't allocate the printerjob [5] in E:\Server\xampp\htdocs\Kiosk\Admin\print.php on line 16

  • Ullas Prabhakar
    Ullas Prabhakar over 13 years
    Tried all ways, but of no use.Thanks for your response
  • Blair McMillan
    Blair McMillan over 13 years
    Hmm, that's odd because the comments on the php.net manual page seem to suggest that it works correctly with those methods.