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 originalvar page = require('webpage').create(),
system = require('system'),
address, orientation;
if (system.args.length < 3) {
phantom.exit(1);
} else {
address = system.args[1];
orientation = (system.args[3] ? system.args[3] : 'landscape');
console.log("Orientacion: "+orientation);
page.viewportSize = { width: 1100, height: 600 };
page.paperSize = {
'format':'A4',
'orientation': orientation,
'margin': {
left: "10mm",
top: "10mm",
right: "10mm",
bottom: "10mm"
}
};
page.open(address, function() {
page.render(system.args[2]);
phantom.exit();
});
}
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 originalsystem("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