printer_open

(PECL printer SVN)

printer_openAbrir una conexión a una impresora

Descripción

resource printer_open ([ string $printername ] )

Esta función intenta abrir una conexión con la impresora determinada.

La función printer_open() también inicia un contexto de dispositivo.

Parámetros

printername

El nombre de la impresora. Si no se establece ningún parámetro esta intentará abrir una una conexión con la impresora por defecto (Si no se especifica en php.ini como printer.default_printer, PHP tratará de detectarla).

Valores devueltos

Devuelve un identificador válido de impresora en caso de éxito o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo deprinter_open()

<?php
$handle 
printer_open("HP Deskjet 930c");
$handle printer_open();
?>

add a note add a note

User Contributed Notes 6 notes

up
5
John Middleton
5 years ago
I had been playing around with trying to get PHP to print to a network server off and on for quite some time, and I finally came across somebody who had the piece of the puzzle I've been missing.

Like I said, the printer I've been trying to print to is a network printer, so I had been trying to open the printer as follows:

<?php printer_open("\\\\servername\\printername"); ?>

What I had been missing is that the function needed the internet host name of the server, which includes the domain name.  So, let's say my print server was called "PServer" and my network's domain was called php.net:

<?php printer_open("\\\\Pserver.php.net\\printername"); ?>

This will more than likely work, then you can open and print a file as follows:

<?php
$printer
= "\\\\Pserver.php.net\\printername");
if(
$ph = printer_open($printer))
{
  
// Get file contents
  
$fh = fopen("filename.ext", "rb");
  
$content = fread($fh, filesize("filename.ext"));
  
fclose($fh);
       
  
// 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...";
?>
up
0
Sunny Chan from HK
5 years ago
If you cannot print on a client shared printer, you may create a admin user account, and assign it to run Apache under Windows Service.
up
0
philip
9 years ago
This function may also return NULL on failure, instead of FALSE.
up
0
jasonlam_ at hotmail dot com
11 years ago
Connecting to Network Printers
<?php
   $handle
= printer_open("\\\\DOMAIN_NAME\\Printer_Name");
?>
Similiar to how you would locate a domain on your network
you need to have 2 prefix slashes.  But as reminder
you need to escape it.  So really you need 4 slashes.  It
worked me. Hopefully this helps who is having problems
connecting to network printer.
up
-4
knightcon at bluebottle dot com
7 years ago
If you are desperate to do server-side printing with PHP on a *nix machine then you can always use the fsockopen() function and send a pre-build PJL (Printer Job Language) string directly to the printer. As long as your printer supports PJL then there should be no problem. Just also bare in mind that unless you are doing something very special, like sending the print job to a remote printer and not the printer the client is at you should just make a report page generated by php and apply a css stylesheet which makes the page styled for printing.
up
-6
jt at jtis dot de
9 years ago
Revision: Single quotes DO work, but with a triple slash, like
printer_open('\\\SERVERNAME\PRINTERNAME');

Weird.
To Top