Foros del Web » Programando para Internet » PHP »

Interacion con impresora en equipo que tiene el servidor apache/php

Estas en el tema de Interacion con impresora en equipo que tiene el servidor apache/php en el foro de PHP en Foros del Web. Ola, siento las molestias, pero después de muchos intentos, voy a necesitar ayuda con mi problema. Estoy intentado que desde una web en php, se ...
  #1 (permalink)  
Antiguo 18/06/2008, 02:10
 
Fecha de Ingreso: agosto-2007
Mensajes: 42
Antigüedad: 16 años, 8 meses
Puntos: 0
Interacion con impresora en equipo que tiene el servidor apache/php

Ola, siento las molestias, pero después de muchos intentos, voy a necesitar ayuda con mi problema.

Estoy intentado que desde una web en php, se pueda imprimir un documento (albarán, factura,...) por la impresora que sea, por ejemplo los albaranes por la impresora2 y las facturas por la impresora1. Después de ver muchas opciones de lenguajes de cliente como JS, no me daban una buena solución y opte incluso por instala apache, php, mysql, a cada cliente y ponerle un archivo php con la librería php_printer.

Porque todo el mundo recomienda esta librería, para imprimir desde php, estuve viendo la documentacion ofical en php.net

http://es.php.net/printer y de muchas otra web

en teoría un código como este, te permite imprimir:

<?php
$handle = printer_open("HP Deskjet 930c");
printer_write($handle, "Text to print");
printer_close($handle);
?>

Y lo hace de forma muy correcta en impresoras locales al equipo peor ne la impresoras de red, no ahí forma. En cada manual que he leído me lo explica de una forma y he realizado intentos de todas esas formas pero no lo he podido conseguir.

En teoría así se abre una impresora de red para imprimir con el código anterior:

solo debo cambiar la primera linea por esta:
$handle = printer_open("\\DOMAIN_NAME\Printer_Name");

Pero no conseguía abrirlo en los comentarios dela documentación oficial alguien comentaba que era de esta forma:

$handle = printer_open("\\\DOMAIN_NAME\Printer_Name");

Pero no tiene efecto tampoco, otro manual decía que era así:

$handle = printer_open("\\\\DOMAIN_NAME\\Printer_Name");

Pero tampoco en los dos últimos intentos no da error de no poder abrir la impresora , pero nunca llega a mandar una impresión.


Ahora intento pediros ayuda, para una forma con la que consiga desde php imprimir por la impresora que quiera, gracias a todo el que haya leído tanta información que suele costar. Pero quería hacer ver, que he probado de muchas formas, para que no me digáis soluciones en vano.

Un saludo
  #2 (permalink)  
Antiguo 18/06/2008, 02:21
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: Interacion con impresora en equipo que tiene el servidor apache/php

Quizas no es un problema de PHP, sino de permisos y usuarios a nivel de sistema operativo (windows) y de red.

Mira con printer_list() (http://es.php.net/manual/es/function.printer-list.php) las impresoras que ve PHP.
  #3 (permalink)  
Antiguo 18/06/2008, 02:44
 
Fecha de Ingreso: agosto-2007
Mensajes: 42
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Interacion con impresora en equipo que tiene el servidor apache/php

Que problema de permisos es el que tengo.

Porque usando el código de uno de los comentarios de esa función que me pasaste, obtengo el listado de las impresoras locales, pero no las de red.

este es el código:

Código PHP:
if (function_exists("printer_list"))
  {
  
$PrintCurr 0;

  
// Get the local printers.
  
$PrintDests printer_list(PRINTER_ENUM_LOCAL);

  if (isset(
$PrintDests))
    foreach (
$PrintDests as $PrintDest)
      
$PrinterList[$PrintCurr++] = $PrintDest["NAME"];

  
// We should be able to enumerate the remote printers too.  Let's have a
  // shot at it.
  //
  // Start by looking for the remote printers tree.
  
$PrintDoms printer_list(PRINTER_ENUM_NAME); $PrintTree "";

  if (isset(
$PrintDoms))
    foreach (
$PrintDoms as $PrintDomain)
      {
      if (
preg_match("/Remote/i"$PrintDomain["NAME"]))
        { 
$PrintTree $PrintDomain["NAME"]; break; }
      }

  
// If we found a remote printers tree, we need to enumerate all of the
  // domains/workgroups/nodes within the tree and all the printers attached
  // to those nodes.
  
if ($PrintTree != "")
    {
    
// Enumerate all of the domains.
    
$PrintDoms printer_list(PRINTER_ENUM_NAME$PrintTree);

    if (isset(
$PrintDoms))
      foreach (
$PrintDoms as $PrintDomain)
        {
        
// Enumerate all of the nodes within the domain.
        
$PrintNodes printer_list(PRINTER_ENUM_NAME$PrintDomain["NAME"]);

        if (isset(
$PrintNodes))
          foreach (
$PrintNodes as $PrintNode)
            {
            
// Enumerate all of the printers within the node.
            
$PrintDests printer_list(PRINTER_ENUM_NAME,
              
$PrintNode["NAME"]);

            if (isset(
$PrintDests))
              foreach (
$PrintDests as $PrintDest)
                
$PrinterList[$PrintCurr++] = $PrintDest["NAME"];
            }
        }
    }
  }

  
print_r($PrinterList); 

Y obtengo este resultado:

Código PHP:
Array ( [0] => WinFax (Photo Quality) [1] => WinFax [2] => Microsoft Office Document Image Writer [3] => HP Photosmart D5100 series 
Pero aquí falta una, la impresora de red, que permisos debo modificar en windows para que php pueda verla¿? y gracias por tu ayuda


Los dos PC tienen Windows XP SP2

Última edición por blanko; 18/06/2008 a las 02:49 Razón: Para añadir el sistema operativo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:47.