Tema: PDF corrupto
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/09/2014, 04:51
Orkoh
 
Fecha de Ingreso: septiembre-2014
Mensajes: 2
Antigüedad: 9 años, 8 meses
Puntos: 0
PDF corrupto

Hola a todos!!!

Es un placer estar por aqui con vosotros compartiendo conocimientos y resolviendo dudas. Iré al grano.

Mi problema basicamente consiste en:

- creo un pdf con la librería ezPdf de PHP
- la codifico en base64
- la almaceno en base de datos en un campo text.

en otra pagina

- recupero el string y lo decodifico.
- al abrir el pdf me dice que esta corrupto.

Bueno antes de empezar a poner codigo dire un par de cosas que creo que son necesarias saber.

1º- no puedo cambiar de libreria para crear el pdf.
2º- el pdf contiene además de texto una imagen incrustada (una firma que se mete desde un pad de teclado de tablet).
3º- la aplicacion corre en local.
4º- el campo de base de datos ya se que debería ser BLOB pero no puedo cambiarlo tampoco.

Una vez dicho todo esto os pondre basicamente el codigo que ahora mismo hay en la app.

archivo1.php

Cita:
$pdfcode = $myPdf->ezOutput();
$d = date("YmdHis_");
header('Content-type: application/pdf');
$fp=fopen('../pdf/tmp/' . $d . 'pdfTmp.pdf','wb');
fwrite($fp,$pdfcode);
fclose($fp);
$nombre_temporal= '../img/tmp/' . $d . 'pdfTmp.pdf';
$data = base64_encode(file_get_contents($nombre_temporal)) ;

$data_ticket = array(
'contador_ng' => $id,
'pdf' => $data
);

$ret = $ng->updateTable('insert', 'lg_ng_pdf', $data_ticket);
Hasta aqui el pdf que se genera se abre sin problemas y el contenido es todo correcto pero al ser un archivo temporal se eliminara en cualquier momento.

archivo2.php
Cita:
$d = date("YmdHis_");
$dir_tmp = "../img/tmp/";

$data = base64_decode($row['pdf']);
$file = $dir_tmp . $d . 'pdfTmp.pdf';
file_put_contents($file, $data);
return $file;
cuando abro este nuevo archivo el pdf me sale como corrupto.

La verdad es que ya he probado mil cosas, añadir mas cabeceras, menos cabeceras, usar funciones distintas, distintas codificaciones... y el resultado siempre es el mismo.

Espero podais hecharme un cable con este problema y de paso si le sirve a alguien mas pues perfecto.

Desde ya muchas gracias y un saludo!!!
die();