PHP - Mostrar un pdf dentro de una tabla con php(solucion)

   
Vista:

Mostrar un pdf dentro de una tabla con php(solucion)

Publicado por Gonzalo (338 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)

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de xve

Mostrar un pdf dentro de una tabla con php(solucion)

Publicado por xve (5517 intervenciones) el 02/09/2014 21:20:36
Muy bueno Gonzalo!!! gracias por compartirlo!!!
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

Mostrar un pdf dentro de una tabla con php(solucion)

Publicado por Gonzalo (338 intervenciones) el 02/09/2014 22:58:59
Fe de erratas:

pero NO FUNCIONA ya que el header se inicio como utf-8

quise decir: pero NO FUNCIONA ya que el header se inicio como Content="text/html; charset=utf-8"

<iframe src="Factura.Pdf'" (sobra un apostrofe ' despues de Factura.Pdf) debe ser
<iframe src="Factura.Pdf"

<iframe src="MostrarFactura.php?Archivo=Factura.Pdf'" (sobra un apostrofe ' despues de Factura.Pdf) debe ser
<iframe src="MostrarFactura.php?Archivo=Factura.Pdf"

gracias, salu2.
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

Mostrar un pdf dentro de una tabla con php(solucion)

Publicado por Brayam (1 intervención) el 06/10/2016 21:49:14
El codigo funciona, pero no carga el documento que quiero mostrar, aparece un mensaje que dice: 'Se ha producido un error al cargar el documento PDF.'
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