Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/04/2015, 07:27
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 8 meses
Puntos: 320
Respuesta: Reportes en pdf con php y mysql ?

Hola, si tienes acceso al servidor (ya sea porque es un vps o bien un servidor local) un metodo genial es usar phantom.js, te lo descargas es un pequeño binario portable que no requiere instalacion, luego, te creas un archivo por ejemplo "armar_pdf.js" con el siguiente contenido:
Código Javascript:
Ver original
  1. var page = require('webpage').create(),
  2.     system = require('system'),
  3.     address, orientation;
  4.    
  5. if (system.args.length < 3) {
  6.     phantom.exit(1);
  7. } else {
  8.     address = system.args[1];
  9.     orientation = (system.args[3] ? system.args[3] : 'landscape');
  10.     console.log("Orientacion: "+orientation);
  11.     page.viewportSize = { width: 1100, height: 600 };
  12.     page.paperSize = {
  13.           'format':'A4',
  14.           'orientation': orientation,
  15.           'margin': {
  16.             left: "10mm",
  17.             top: "10mm",
  18.             right: "10mm",
  19.             bottom: "10mm"
  20.         }
  21.       };
  22.      
  23.     page.open(address, function() {
  24.             page.render(system.args[2]);
  25.             phantom.exit();
  26.     });
  27. }

Luego desde php solo tienes que llamarlo asi (suponiendo que el binario de phantomjs este en la misma carpeta que el script php y que el archivo armar_pdf.js también esta en la misma carpeta):
Código PHP:
Ver original
  1. system("phantomjs armar_pdf.js 'http://127.0.0.1/reporte_visual.php' 'nombre_reporte.pdf' portrait");

Consideraciones:
El archivo reporte_visual.php es un archivo que genera el reporte en html5 y css3 tal como se lo muestras al usuario por pantalla, no tiene que ser otro archivo separado, para definir los estilos que quieres que tenga el pdf puedes usar css con @media=print

El primer parametro es la url de donde obtener el reporte, en este caso local, el segundo el nombre del archivo generado y el tercero la orientacion que quieres que tenga el pdf.

cuando ese comando termina, tendras creado un archivo llamado nombre_reporte.pdf que se lo puedes enviar al usuario.

Si no eres dueño del servidor tendras que seguir lidiando con las librerias de php
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios