InPut Creativity SL - Marketing Digital en Granada

InPut Creativity SL
Registro Mercantil de Granada
Tomo 1440, Libro 0, folio 88, hoja GR-40465 Insc. 1ª

Cuesta de Rodrigo del Campo 37, 18009, Granada
858 952 150
info@inputcreativos.es
Buscar en InPutCreativos.es

InPut Creativity SL

FPDF para listado de calificaciones de alumnos

¿Qué es FPDF?

FPDF es una clase escrita en PHP que permite generar documentos PDF directamente desde PHP, es decir, sin usar la biblioteca PDFlib.

Es un código abierto, por lo que puede modificarse para cada necesidad. El autor pone a nuestra disposición su página de descargas, ejemplos, tutoriales y una lista de scripts con extensiones de utilidad para crear nuestros propios documentos .pdf directamente desde el servidor. Visita la web del autor.

Incluyo aquí un ejemplo de formato para FPDF como respuesta a una pregunta de Jaime en TodoExpertos, un usuario que necesita imprimir listados pdf con las calificaciones de alumnos guardadas en una base de datos MySql.

Para el ejemplo se han generado datos aleatorios que deberán ser sustituidos por los resultantes de la consulta sql.

Puede ver el ejemplo en marcha aquí: Generar listado de calificaciones

Puede descargar el archivo aquí: Descargar el archivo

Te comento el código utilizado en el ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<!--?php require('fpdf.php'); //Cargamos el archivo con la clase FPDF class PDF extends FPDF { // Cabecera de página function Header() { // Logo $this-&gt;Image('img/logo.png',10,8,33); //Imagen corporativa
    // Arial bold 15
    $this-&gt;SetFont('Arial','B',15); //La "B" indica Negrita (Bold), otras opciones disponibles, por ejemplo subrayado sería U
    // Movernos a la derecha
    $this-&gt;Cell(80);
    // Título
    $this-&gt;Cell(30,10,'Reporte de calificaciones',0,0,'C'); //La "C" indica centrado, la "R" indicaría alineado a la derecha
    // Salto de línea
    $this-&gt;Ln(20); //El número indica la distancia con la siguiente línea
}
 
// Pie de página
function Footer()
{
    // Posición: a 1,5 cm del final
    $this-&gt;SetY(-15);
    // Arial italic 8
    $this-&gt;SetFont('Arial','I',8);
    // Observaciones
    $this-&gt;Cell(0,10,'Observaciones: ',0,0);
    // Número de página
    $this-&gt;Cell(0,10,'Pag.: '.$this-&gt;PageNo().'/{nb}',0,0,'R'); 
 
}
}
/*Datos aleatorios para el ejemplo*/
$nombres=array('Manuel','Nuria','Angela','Andrea','Ramiro','Victor','Miguel','Vanessa');
$apellidos=array('Molina','Aguirre','Cobos','Santos','Gurruchaga','Pino','Navarro','Medina');
$grados=array('1','2','3');
$cursos=array('A','B','C','D','E','F');
$habilidades=array('Hace esto muy bien','Hace aquello ni fu ni fa','Evoluciona en la materia','Sabe mucho de esto','Tiene una buena actitud','Tiene buenas aptitudes');
$asignaturas=array('Matemáticas','Lengua española','Geometría','Religión');
 
// Creación del objeto de la clase heredada
$pdf = new PDF();
$pdf-&gt;AliasNbPages();
 
for($i=1;$i&lt;=10;$i++){ //Este bucle para reproducir 10 alumnos aleatorios no es útil con los datos reales que provienen de la consulta SQL $alumno=$nombres[rand(0, 7)].' '.$apellidos[rand(0, 7)].' '.$apellidos[rand(0, 7)]; //Genero aleatoriamente nombre y apellidos $grado=$grados[rand(0, 2)]; // Genero aleatoriamente el grado del alumno $curso=$cursos[rand(0, 5)]; // Genero aleatoriamente el curso del alumno $pdf-&gt;AddPage(); // En cada interacción del bucle genero una nueva página en el pdf
	$pdf-&gt;SetFont('Times','',12); // Indico la fuente para la siguiente línea
        $pdf-&gt;Cell(4,2,'Alumno: '.$alumno); // Se imprimen los datos de cada alumno
	$pdf-&gt;SetX(100); //Distancia horizontal hasta siguiente bloque de texto
	$pdf-&gt;Cell(4,2,'Grado: '.$grado.utf8_decode('º')); // Imprimo grado
	$pdf-&gt;SetX(140); 
	$pdf-&gt;Cell(4,2,'Curso: '.$curso,0,1); // Imprimo curso
	$pdf-&gt;Ln(7); // Salto de línea, puedo cambiar la distancia con la siguiente con el número pasado como parámetro entre paréntesis
	$pdf-&gt;Cell(0,2,utf8_decode('Num. Identificación').': '.$i,0,0); //Imprimo otro dato
	$pdf-&gt;Ln(12);
	$pdf-&gt;Line(12,47,200,47); // Dibujo línea horizontal. Puntos absolutos, los dos primeros definen punto de inicio, los dos siguientes punto final.
	$pdf-&gt;SetFont('Times','B',12);
	$pdf-&gt;Cell(0,2,'Materias-Asignaturas:',0,0);
 
	for($a=0;$a&lt;4;$a++){ // Bucle para incluir las asignaturas $pdf-&gt;SetFont('Times','B',16);
		$pdf-&gt;Ln(12);
		$nota=rand(10,100)/10; // Obtengo nota aleatoria
		$pdf-&gt;Cell(0,2,utf8_decode($asignaturas[$a]).' ('.rand(0,100).'%) - Nota: '.$nota,0,0); // Imprimo asignatura, porcentaje y nota.
		$pdf-&gt;Ln(12);
		$pdf-&gt;SetFont('Times','B',12);
		$pdf-&gt;Cell(0,2,'Logros evaluados:',0,0);
		$pdf-&gt;Ln(7);
		$pdf-&gt;SetFont('Times','',12);
		shuffle($habilidades); // desordeno los logros del array de ejemplo
		$pdf-&gt;Cell(0,2,'  - '.$habilidades[0],0,0); // Imprimo los logros obtenidas
		$pdf-&gt;Ln(7);
		$pdf-&gt;Cell(0,2,'  - '.$habilidades[1],0,0);
		$pdf-&gt;Ln(7);
		$pdf-&gt;Cell(0,2,'  - '.$habilidades[2],0,0);
		$pdf-&gt;Ln(7);
		$pdf-&gt;Cell(0,2,'_________________________________________________________________________',0,0,'C');
	}
 
}
$pdf-&gt;Output();
?-->

Espero que pueda servirte para entender un poco mejor cómo generar .pdf a petición del cliente, directamente desde el servidor mediante php.

INPUT CREATIVITY

Sociedad Limitada

Cuesta de Rodrigo del Campo 37 – 18009 – Granada
858 952 150info@inputcreativos.es

Abrir chat
Hola 👋
¿En qué podemos ayudarte?