Lenguaje PHPMYSQL La base de datos

Crear archivos en PDF con PHP MySQLi

¿Cómo visualizar y descargar un PDF usando PHP & MySQL?

Crear archivos en PDF con PHP MySQLi. En este artículo vamos a aprender a crear ficheros PDF con PHP y MySQLi utilizando la librería de PHP dompdf.

Ahora, lo que haremos es explicar cómo crear documentos PDF con esta librería dinámica. Para generar un documento PDF desde PHP lo podemos hacer utilizando diversas formas. Sin embargo, lo podemos realizar con las librerás HTML2PDF, FPDF y/o DOMPDF.

Crear archivos en PDF con PHP MySQLi

Los recursos que usaremos son:

  • Uso de PHP
  • Instalación de librerías externas
  • Utilizar e instalar DOMPDF
  • Generar ficheros PDFs con nombre personalizado en una variable.
  • Inserción de etiquetas HTML (Tablas).
  • Reportes en PDF desde PHP y MySQLi

Componentes del sistema

Base de datos

Debemos de crear una base de datos e importar la siguiente consulta SQL. Para este ejemplo la tabla se llamará «transacciones». Sin embargo, puedes cambiar tanto el nombre de la tabla como sus columnas.

Además, en el script también debes de cambiar.

CREATE TABLE `transacciones` (
`id` int(11) NOT NULL,
`transaccion_cod` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`nombres` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
`tipo_pago` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`estado_transaccion` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `transacciones` (`id`, `transaccion_cod`, `nombres`, `tipo_pago`, `estado_transaccion`, `email`) VALUES
(1, '10001', 'Jose Flores', 'Tarjeta', 'Activo', 'jose@gmail.com');


ALTER TABLE `transacciones`
ADD PRIMARY KEY (`id`);

ALTER TABLE `transacciones`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

db.php

Encargada de realizar la conexión con la base de datos

<?php
// Configuración necesaria para acceder a la data base.
$hostname = "localhost";
$usuariodb = "root";
$passworddb = "root";
$dbname = "php_exportapdf";
	
// Generando la conexión con el servidor
$conectar = mysqli_connect($hostname, $usuariodb, $passworddb, $dbname);
?>

index.php

La portada principal donde está la información de la base de datos que será exportada en un fichero PDF.

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="favicon.ico">

    <title>Generar Archivo PDF con PHP - BaulPHP.com</title>

    <!-- Bootstrap core CSS -->
    <link href="dist/css/bootstrap.min.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="assets/css/sticky-footer-navbar.css" rel="stylesheet">
  </head>

  <body>

    <header>
      <!-- Fixed navbar -->
      <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
        <a class="navbar-brand" href="#">BaulPHP</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarCollapse">
          <ul class="navbar-nav mr-auto">
            <li class="nav-item active">
              <a class="nav-link" href="index.php">Inicio <span class="sr-only">(current)</span></a>
            </li>
     
	
          </ul>
          <form class="form-inline mt-2 mt-md-0">
            <input class="form-control mr-sm-2" type="text" placeholder="Buscar" aria-label="Search">
            <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Busqueda</button>
          </form>
        </div>
      </nav>
    </header>

<!-- Inicio content -->  
 <div class="container">
 <h1 class="mt-5">Generar Archivo PDF con PHP</h1>
 <hr>
<div class="btn btn-primary"><a href="GenerarPDF.php" style="color:#FFF; text-decoration:none; " target="_blank">Visualizar en PDF</a></div>
<div class="btn btn-primary"><a href="DescargarPDF.php" style="color:#FFF; text-decoration:none; " target="_blank">Descargar PDF</a></div>
  <hr>
<div class="row">

  <div class="col">

  
<?php	

	include_once("db.php");
	echo '<table class="table"';	
	echo  '<thead>';
	echo  '<tr>';
	echo  '<th scope="col">ID</th>';
	echo  '<th scope="col">COD Transaccion</th>';
	echo  '<th scope="col">Nombres</th>';
	echo  '<th scope="col">Tipo de Pago</th>';
	echo  '<th scope="col">Estado Transaccion</th>';
	echo  '<th scope="col">E-mail</th>';
	echo  '</tr>';
	echo  '</thead>';
	echo  '<tbody>';
	
	$resultado_transacciones = "SELECT * FROM transacciones";
	$resultado_transacciones = mysqli_query($conectar, $resultado_transacciones);
	while($transacciones = mysqli_fetch_assoc($resultado_transacciones)){
		echo  '<tr><td>'.$transacciones['id'] . "</td>";
		echo  '<td>'.$transacciones['transaccion_cod'] . "</td>";
		echo  '<td>'.$transacciones['nombres'] . "</td>";
		echo  '<td>'.$transacciones['tipo_pago'] . "</td>";
		echo  '<td>'.$transacciones['estado_transaccion'] . "</td>";
		echo  '<td>'.$transacciones['email'] . "</td></tr>";		
	}
	
	echo  '</tbody>';
	echo  '</table>';
?>





</div>
</div><!-- Fin row -->
</div><!-- Fin container -->




<!-- Inicio Footer -->
    <footer class="footer">
      <div class="container">
        <span class="text-muted"><p>Códigos <a href="https://www.baulphp.com/" target="_blank">BaulPHP</a></p></span>
      </div>
    </footer>

    <!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script>window.jQuery || document.write('<script src="assets/js/vendor/jquery-slim.min.js"><\/script>')</script>
    <script src="assets/js/vendor/popper.min.js"></script>
    <script src="dist/js/bootstrap.min.js"></script>
  </body>
</html>

Fichero DescargarPDF.php

Sera el archivo encargado de procesar la información y convertirlo en formato PDF usando la librería DOMPDF.

	include_once("db.php");
	$mihtml = '<table border=1';	
	$mihtml .= '<thead>';
	$mihtml .= '<tr>';
	$mihtml .= '<th>ID</th>';
	$mihtml .= '<th>COD Transaccion</th>';
	$mihtml .= '<th>Nombres</th>';
	$mihtml .= '<th>Tipo de Pago</th>';
	$mihtml .= '<th>Estado Transaccion</th>';
	$mihtml .= '<th>E-mail</th>';
	$mihtml .= '</tr>';
	$mihtml .= '</thead>';
	$mihtml .= '<tbody>';
	
	$resultado_transacciones = "SELECT * FROM transacciones";
	$resultado_transacciones = mysqli_query($conectar, $resultado_transacciones);
	while($transacciones = mysqli_fetch_assoc($resultado_transacciones)){
		$mihtml .= '<tr><td>'.$transacciones['id'] . "</td>";
		$mihtml .= '<td>'.$transacciones['transaccion_cod'] . "</td>";
		$mihtml .= '<td>'.$transacciones['nombres'] . "</td>";
		$mihtml .= '<td>'.$transacciones['tipo_pago'] . "</td>";
		$mihtml .= '<td>'.$transacciones['estado_transaccion'] . "</td>";
		$mihtml .= '<td>'.$transacciones['email'] . "</td></tr>";		
	}
	
	$mihtml .= '</tbody>';
	$mihtml .= '</table';

Código para forzar la descarga desde el navegador

	$dompdf->stream(
		"Lista_Transacciones", 
		array(
			"Attachment" => true //Para realizar la descarga
		)
Generar Archivo PDF con PHP y MySQLi
Generar Archivo PDF con PHP y MySQLi

CONCLUSIÓN

La creación de sistemas web hoy en día está creciendo rápidamente y sus desarroladores tambien. Sin embargo, su uso se ve incrementando en las empresas que implementan estos sistemas por su facilidad de uso.

Es por tal motivo que BAULPHP está apoyando con un granito de arena para exportar la información de la base de datos en un archivo formato PDF. Para dar dinamismo al sistema web.

Nota:

No se olviden de actualizar la librería para que funcione correctamente y lo pueden hacer descargando el DOMPDF del siguiente link

Hemos actualizado el script conjuntamente con la librería DOMPDF para que no genere errores

DESCARGA

Descargar Código Fuente

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

3 comentarios

  1. Hola a todos,

    Hemos actualizado el script y además hemos actualizado la librería para visualizar y generar descargas de documentos PDF usando como base MYSQL. Por otro lado, tambien hemos incluido la tabla para el ejemplo.

    Saludos cordiales

  2. hola estimado tmuy buen blog de php. directo a programar y generar códigos interesantes.
    en estos momentos estoy buscando generadores de codigophp para formularios

  3. Hola compañero. En los ficheros de descarga no está la base de datos. Podrías facilitarla?

    Muy buenos los aportes! gracias!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba