Mostrar un pdf dentro de una tabla con php(solucion)
Publicado por Gonzalo (615 intervenciones) el 02/09/2014 19:46:35
este post intenta ser mas bien una guia.
estube varios dias tratando de mostrar unas facturas en pdf por web usando php, despues de muchos intentos estube a punto de rendirme cuando encontre este ejemplo y la verdad trabaja muy muy bien, se los paso por si lo llegan a necesitar.
basicamente el problema es el encabezado del explorador, si lo mandas como texto no muestra el pdf, te muestra solo basura, y si lo mandas como pdf te cancela el utf-8 y adios acentos aparte de que no muestra el archivo, solo un triste recuadro en blanco.
bueno, como se debe hacer? inicia tu pagina como siempre y manda el encabezado normal.
meta http-equiv="Content-Type" content="text/html; charset=utf-8"
y arma la tabla como siempre, aqui voy a usar una tabla con 2 renglones divididos en 2 columnas, voy a mostrar el pdf en el segundo renglon, segunda columna (el cuadro de abajo a la derecha)
bien el comando para mostrar un pdf es este
pero NO FUNCIONA ya que el header se inicio como utf-8, bien, la solucion es cambiar el nombre del archivo en pdf por otro en php y pasar el nombre del archivo como GET, solo voy a mostrar la celda 2.2 ok?
les juro que eso es todo.
ahora el archivo MostrarFactura.php
ustedes agreguen la seguridad que consideren necesaria, asi como está funciona exelente.
esto abre otra posibilidad, por ejemplo, mostrar a tabla con todas las facturas y crear un evento que al dar click en x factura la muestre en algun lado dentro de la pagina sin tener que refrescar la pagina, ... y lo pude hacer combinando php con javascript y Ajax!!!!. :):):):):):):):):):)
suerte, salu2.
estube varios dias tratando de mostrar unas facturas en pdf por web usando php, despues de muchos intentos estube a punto de rendirme cuando encontre este ejemplo y la verdad trabaja muy muy bien, se los paso por si lo llegan a necesitar.
basicamente el problema es el encabezado del explorador, si lo mandas como texto no muestra el pdf, te muestra solo basura, y si lo mandas como pdf te cancela el utf-8 y adios acentos aparte de que no muestra el archivo, solo un triste recuadro en blanco.
bueno, como se debe hacer? inicia tu pagina como siempre y manda el encabezado normal.
meta http-equiv="Content-Type" content="text/html; charset=utf-8"
y arma la tabla como siempre, aqui voy a usar una tabla con 2 renglones divididos en 2 columnas, voy a mostrar el pdf en el segundo renglon, segunda columna (el cuadro de abajo a la derecha)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<table>
<tr>
<td>celda 1.1
</td>
<td>celda 1.2
</td>
</tr>
<tr>
<td>celda 2.1
</td>
<td>celda 2.2 (aqui va el pdf)
</td>
</tr>
</table>
bien el comando para mostrar un pdf es este
1
<iframe src="Factura.Pdf'" width="600" height="780" style="border: none;"></iframe>
pero NO FUNCIONA ya que el header se inicio como utf-8, bien, la solucion es cambiar el nombre del archivo en pdf por otro en php y pasar el nombre del archivo como GET, solo voy a mostrar la celda 2.2 ok?
1
2
3
<td>celda 2.2 (aqui va el pdf)
<iframe src="MostrarFactura.php?Archivo=Factura.Pdf'" width="600" height="780" style="border: none;"></iframe>
</td>
les juro que eso es todo.
ahora el archivo MostrarFactura.php
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$file ='Path\Del\Pdf\'.$_GET["Archivo"];
$filename = $_GET["Archivo"];
header('Content-type: application/pdf');// esta linea fue mi dolor de cabeza
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');
@readfile($file);
?>
ustedes agreguen la seguridad que consideren necesaria, asi como está funciona exelente.
esto abre otra posibilidad, por ejemplo, mostrar a tabla con todas las facturas y crear un evento que al dar click en x factura la muestre en algun lado dentro de la pagina sin tener que refrescar la pagina, ... y lo pude hacer combinando php con javascript y Ajax!!!!. :):):):):):):):):):)
suerte, salu2.
Valora esta pregunta


1