Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lie09 en 25 de Julio 2015, 01:14
-
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 ::)
-
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:
<?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:
<?php
require('fpdf.php');
class PDF extends FPDF
{
function Header()
{
$this->Image('logo.png',10,8,33);
$this->SetFont('Helvetica','B',15);
$this->SetXY(50, 10);
$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
-
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.
$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();
}
-
¿Qué ruta de imagen es la que te aparece?
-
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
-
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?
-
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
-
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:
$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
-
Ok muchas gracias, probaré esto saludos :D