PHP - Imprimir archivo pdf con php del lado del cliente

 
Vista:
Imágen de perfil de Anibal Pedro

Imprimir archivo pdf con php del lado del cliente

Publicado por Anibal Pedro (2 intervenciones) el 13/08/2021 03:12:10
Buenas Noches
Como ya he expresado antes soy un novato autodidacta y tratare de exponer claramente
el problema por si alguien puede ayudarme
1) Tengo un servidor Apache en una raspberry pi 4 funcionando OK en linux
2) En las carpetas /var/www/html (del servidor) .... hay algunos archivos php y html que corro con una maquina windows desde una red local 192.168......
3) En la raspberri pi hay conectada una impresora en un servidor cups (todo ok)
4) En un archivo php (listado.php) genero un pdf con la libreria fpdf (todo ok)
5) En $pdf->Output no lo mando al navegador sino que guardo el archivo en disco
6) Con comando excec (de linux imprimo directamente ya que necesito que sea asi .(directamente a la printer)
Todo bien . Ahora viene el problema
Necesito correr los php desde fuera de la red local . Concretamente en otra ciudad con una maquina windows y funciona bien con una url (ejemplo minombreserver.ddns.net/www/html etc etc)
He logrado ver del lado del cliente el pdf en el navegador ,pero quisiera que ahora se imprimiera directamente en la impresora de la maquina windows del cliente(perdon la redundancia)
Es posible ? o estoy desvariando? (Habria que enviar tambien el pdf a la maquina cliente , estimo ???)
Espero haberme explicado claramente y adjunto unas pocas lineas del codigo para mas claridad
Desde ya muchas gracias

Codigo---------------

$pdf->Cell(11,3,$row['varios_tar2'],0,0,'L');
$pdf->Cell(11,3,$row['varios_ord1'],0,0,'L');
$pdf->Cell(11,3,$row['varios_ord2'],0,1,'L');
}

$pdf->Ln();

$pdf->Cell(31,3,"Saldo inicial dia siguiente ",0,0,'L');

$pdf->Cell(11,3,$final,0,1,'L');


//--------------------------------------------
$pdf->Output('F','pepes1.pdf');
exec('lp pepes1.pdf'); // comando para imprimir (linux) sin mostrar en el navegador !!!!
//--------------------------------------------


?>

//sigue html--------------------------------------

<h1>Desea borrar el listado de caja?</h1>


<form action="menu.php">
<p> <input type="submit" name="volver" value="Volver al menu principal"></p>
</form>

<form method="post" action="borra_caja.php" id="borra_caja"> <!-- va a pagina borra_caja -->
<p> <input type="hidden" name="final" value="<?php echo $final;?>"> </p>
<p> <input type="Submit" name="Borra" value="Borrar"> </p>
</form>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Imprimir archivo pdf con php del lado del cliente

Publicado por Mauro (1036 intervenciones) el 13/08/2021 14:34:25
Hola Anibal!

Me temo que lo que buscas no es posible usando php :(

La impresión que quieres realizar se hace del lado del cliente, por lo tanto, a lo sumo con algo de javascript podrás hacerlo.

Ten en cuenta que php sólo ejecuta del lado del servidor, es decir, cuando el cliente ve el html generado ya php ha finalizado su trabajo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Anibal Pedro

Imprimir archivo pdf con php del lado del cliente

Publicado por Anibal Pedro (2 intervenciones) el 13/08/2021 15:08:06
Gracias Mauro por responder. Es muy logico tu cometario.
Alguna idea de como seria el comando $pdf->Output para enviar el archivo a la maquina del
cliente y alli ver de usar javaScript ?. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Imprimir archivo pdf con php del lado del cliente

Publicado por Mauro (1036 intervenciones) el 16/08/2021 16:27:32
Algo que podrías hacer es guardar el archivo en algun directorio local del servidor, por ejemplo en /tmp y luego mostrar su contenido al usuario, algo como:

1
echo file_get_contents($archivoPDF);

Para forzar la descarga del lado del cliente debes usar un encabezado especial:

1
2
header("Content-Type:application/pdf");
header("Content-Disposition:attachment;filename=reporte.pdf");

Algo importante es poner estos headers antes de realizar el echo u otra salida.

Si quieres consultar más detalles te dejo este artículo y cualquier duda me escribes ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar