Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2005
asirvent asirvent is offline
Miembro
 
Registrado: may 2003
Posts: 48
Poder: 0
asirvent Va por buen camino
Abrir PDF desde PHP

Hola, tengo un fichero PDF, almacenado en un campo de una tabla de Firebird, ahora bien, necesito poder mostrar el fichero pdf que se encuentra almacenado en ese campo utilizando PHP, ¿como lo hago?

un saludo
Responder Con Cita
  #2  
Antiguo 11-05-2005
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Supongo que algo asin:
Código PHP:
       header"Content-type: application/pdf" );
        
header"Content-Length: $len");
        
header"Content-Disposition: inline; filename=nombre.pdf" );
        echo 
$contenido
$contenido es el valor que tienes guardado en la tabla (archivo PDF).
$len es el tamaño del archivo.

Lo pongo de memoria por lo que igual me equivoco en algo, pero seguro que si no es asín es muy parecido.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #3  
Antiguo 17-05-2005
asirvent asirvent is offline
Miembro
 
Registrado: may 2003
Posts: 48
Poder: 0
asirvent Va por buen camino
Hola, he probado lo que me comentas y mi pagina queda como:

<?php
$cfgProgDir = 'phpSecurePages/';
include($cfgProgDir . "secure.php");

$dbh1 = ibase_pconnect ($cfgDbDatabase, $cfgServerUser, $cfgServerPassword);
$stmt1 = "select ap_pdf from albaran_pdf ";
$stmt1 = $stmt1."where em_codigo='1' and s_codigo='O' and a_codigo=14035";
$sth1 = ibase_query ($dbh1, $stmt1);
$row1 = ibase_fetch_object ($sth1);

$len = filesize($row1->AP_PDF);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=albaran.pdf");
echo $row1->AP_PDF;
?>

Bien el caso es que al cargar esta pagina obtengo unicamente unos codigos extraños que supongo seran el pdf, pero no me muestra el pdf.

¿que falta o que puede haber mal?

gracias de antemano.

un saludo
Responder Con Cita
  #4  
Antiguo 18-05-2005
asirvent asirvent is offline
Miembro
 
Registrado: may 2003
Posts: 48
Poder: 0
asirvent Va por buen camino
Hola, me autorespondo yo mismo.

Tengo parte del problema solucionado utilizando:

$len = filesize(ibase_blob_echo($row1->AP_PDF));
header( "Content-type: application/pdf" );
header( "Content-Length: $len");
header( "Content-Disposition: inline; filename=nombre.pdf" );
ibase_blob_echo ($row1->AP_PDF);

El problema que tenia es que el registro $row->AP_PDF que era de tipo blob no lo trataba como tal,al utilizar la instruccion ibase_blob_echo (mostrar blob de interbase), esto genera abre el pdf de la BD y lo abre para guardar pero no me pone el nombre que yo le indico "nombre.pdf", sino el nombre de la pagina php "albaranpdf.php".

Mi pregunta ahora es por una parte, ¿porque no le pone de nombre "nombre.pdf"?, y ¿porque no lo muestra en pantalla?

un saludo
Responder Con Cita
  #5  
Antiguo 20-05-2005
asirvent asirvent is offline
Miembro
 
Registrado: may 2003
Posts: 48
Poder: 0
asirvent Va por buen camino
Para acabar, me vuelvo a responder yo mismo.

Para poder mostrar el fichero en pantalla correctamente, al final lo he tenido que guardar temporalmente y posteriormente cargarlo, me ha quedado así:

$dbh1 = ibase_pconnect ($cfgDbDatabase, $cfgServerUser, $cfgServerPassword);
$stmt1 = "select ap_pdf from albaran_pdf ";
$stmt1 = $stmt1."where em_codigo='1' and s_codigo='O' and a_codigo=14035";
$sth1 = ibase_query ($dbh1, $stmt1);
$row1 = ibase_fetch_object ($sth1);
$blob_data = ibase_blob_info($row1->AP_PDF);
$blob_hndl = ibase_blob_open($row1->AP_PDF);

$nombre_archivo = 'albaran.pdf';
$contenido = ibase_blob_get($blob_hndl, $blob_data[0]);

if (!$gestor = fopen($nombre_archivo, 'w+')) {
echo "No se puede abrir el archivo ($nombre_archivo)";
exit;
}

// Escribir $contenido a nuestro arcivo abierto.
if (fwrite($gestor, $contenido) === FALSE) {
echo "No se puede escribir al archivo ($nombre_archivo)";
exit;
}

fclose($gestor);
ibase_blob_close($blob_hndl);

$filepa='albaran.pdf';
header('Content-type: application/pdf');
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Length: ' . filesize($filepa));
readfile ($filepa);

Con esto ya funciona correctamente.

un saludo
Responder Con Cita
  #6  
Antiguo 23-05-2005
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Yo no he trabajado nunca con interbase por lo que no puedo opinar mucho sobre tu solución, pero con MySQL y las cabeceras que te puse al principio funciona.
Me apunto tu solucion por si acaso.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:38:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi