Autor Tema: PHP crear archivo pdf con librería FPDF e insertar imagen desde base de datos  (Leído 20383 veces)

Lie09

  • Sin experiencia
  • *
  • Mensajes: 7
    • Ver Perfil
    • Tavarez Gloria
Hola!! tengo una duda acerca de cómo mostrar una imagen en un PDF que está almacenada en la base de datos. Utilizo la librería FPDF y no sé cómo mostrar la imagen, sólo me muestra la ruta en el PDF. De antemano muchas gracias ::)
« Última modificación: 25 de Julio 2015, 16:49 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Hola! Pega el código que estés usando para verlo como se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Para insertar una imagen debes invocar la función imagen pasándole el nombre de la imagen, las dimensiones y si quieres que sea un link, la dirección web para el link:

$pdf->Image('logo.png',10,20,33,0,' ','https://www.aprenderaprogramar.com/');

Un ejemplo de código más amplio:

Código: [Seleccionar]
<?php
require('fpdf.php');

//create a FPDF object
$pdf=new FPDF();

//set document properties
$pdf->SetAuthor('Juan Luis Guerra');
$pdf->SetTitle('FPDF tutorial');

//set font for the entire document
$pdf->SetFont('Helvetica','B',20);
$pdf->SetTextColor(50,60,100);

//set up a page
$pdf->AddPage('P');
$pdf->SetDisplayMode(real,'default');

//insert an image and make it a link
$pdf->Image('logo.png',10,20,33,0,' ','http://www.fpdf.org/');

//display the title with a border around it
$pdf->SetXY(50,20);
$pdf->SetDrawColor(50,60,100);
$pdf->Cell(100,10,'FPDF Tutorial',1,0,'C',0);

//Set x and y position for the main text, reduce font size and write content
$pdf->SetXY (10,50);
$pdf->SetFontSize(10);
$pdf->Write(5,'Congratulations! You have generated a PDF.');

//Output the document
$pdf->Output('example1.pdf','I');
?>



Este es otro ejemplo donde se genera una cabecera y un pie de página para el documento pdf:

Código: [Seleccionar]
<?php
require('fpdf.php');

class 
PDF extends FPDF
{
  function 
Header()
    {
      
$this->Image('logo.png',10,8,33);
      
$this->SetFont('Helvetica','B',15);
      
$this->SetXY(5010);
      
$this->Cell(0,10,'This is a header',1,0,'C');
     }

  function 
Footer()
    {
      
$this->SetXY(100,-15);
      
$this->SetFont('Helvetica','I',10);
      
$this->Write (5'This is a footer');
    }
}

$pdf=new PDF();
$pdf->AddPage();
$pdf->Output('example2.pdf','D');
?>


Salu2

Lie09

  • Sin experiencia
  • *
  • Mensajes: 7
    • Ver Perfil
    • Tavarez Gloria
Gracias!! utilizo un while, quiero mostrar la imagen en una celda, ya que muestro una tabla con los siguientes datos de la base de datos y quiero mostrar la imagen, pero me aparece la ruta nada más.

Código: [Seleccionar]
$result = mysqli_query($link, "SELECT * FROM cursos");
while($resultados= mysqli_fetch_array($result))
$pdf->Cell(20,5,$resultados['dias'],1,0);
$pdf->Cell(15,5,$resultados['inicio'],1,0);
$pdf->Cell(15,5,$resultados['termino'],1,0);
$pdf->Cell(15,5,$resultados['horas'].' hrs.',1,0);
        $pdf->Cell(15,5,$resultados['imagen'],1,0);
$pdf->Ln();
}

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
¿Qué ruta de imagen es la que te aparece?


Lie09

  • Sin experiencia
  • *
  • Mensajes: 7
    • Ver Perfil
    • Tavarez Gloria
Me aparece lo siguiente, que es lo que tiene el campo 'imagen' de la bd, pero no se muestra la imagen

../V/Fotos/Cursos/images (2).jpg

Dentro de Vista, tengo esas dos carpetas y las imágenes

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
La ruta de la imagen parece que puede ser errónea. Es extraño que en base de datos se almacene una ruta relativa, lo más normal sería almacenar una ruta absoluta (o en todo caso relativa a la raíz sin usar ..)

../V/Fotos/Cursos/images (2).jpg

Contiene un espacio, las rutas no pueden contener espacios, esto da la impresión de que es un problema.

Además es una ruta relativa, que apunta al directorio inmediatamente superior al directorio donde se encuentre el archivo que la invoca y luego a la subcarpeta V. ¿Pero es esa ruta correcta donde la estás utilizando?

¿Con qué ruta absoluta puedes acceder al archivo de la imagen?

Lie09

  • Sin experiencia
  • *
  • Mensajes: 7
    • Ver Perfil
    • Tavarez Gloria
Lo manejo de forma local en C:\wamp\www\Web\V\Fotos\Cursos y es ahí en Cursos donde se guardan las imágenes que quiero mostrar en el PDF

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Hola yo probaría varias cosas. Una de ellas cambiar la ruta de la imagen y en lugar de /V/Fotos/Cursos/images (2).jpg con espacios cambiarla por /V/Fotos/Cursos/images2.jpg

Esto tendrías que cambiarlo en la base de datos también.

Luego para determinar cuál es la ruta correcta que se debe usar introducir manualmente la ruta en el código, por ejemplo:

Código: [Seleccionar]
$result = mysqli_query($link, "SELECT * FROM cursos");
while($resultados= mysqli_fetch_array($result))
$pdf->Cell(20,5,$resultados['dias'],1,0);
$pdf->Cell(15,5,$resultados['inicio'],1,0);
$pdf->Cell(15,5,$resultados['termino'],1,0);
$pdf->Cell(15,5,$resultados['horas'].' hrs.',1,0);
        $pdf->Cell(15,5,"Web/V/Fotos/Cursos/images2.jpg",1,0);
$pdf->Ln();
}

Si esa ruta no te funciona tendrás que probar otras, por ejemplo "www/Web/V/Fotos/Cursos/images2.jpg"

Ten en cuenta que las rutas en servidores usan normalmente la barra / en lugar de la barra \

Una vez consigas que te funcione con la ruta introducida manualmente ya tendrías que compararlo con lo que tienes en base de datos para conseguir tener en la base de datos la ruta correcta y dejarlo funcionando de modo que extraiga la ruta desde la base de datos.

Salu2

Lie09

  • Sin experiencia
  • *
  • Mensajes: 7
    • Ver Perfil
    • Tavarez Gloria
Ok muchas gracias, probaré esto saludos  :D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".