Convertir datos de HTML a archivos PDF con PHP

PHP sigue siendo un lenguaje muy popular y es muy fácil recuperar datos y mostrar listas, así que si necesitas imprimir la lista en papel A4, tendrás que hacerlo.

El siguiente contenido muestra cómo utilizar la biblioteca Mpdf para imprimir los datos en un archivo PDF, desde aquí puedes respaldar archivos, imprimir a tu gusto.

En tu carpeta de origen, crea un archivo composer.json con el siguiente contenido:

{
“require”: {
“mpdf/mpdf”: “^8.0”
// or “mpdf/mpdf”: “*”
}
}

Asegúrate de tener Composer instalado en tu computadora y luego ejecuta el comando para instalar las bibliotecas smalot y pdfparser:

composer update mpdf

No vamos a hacer consultas desde la base de datos, sino que siempre recuperaremos los datos tan pronto como se envíe el formulario, suponiendo que nuestro formulario de entrada de datos tenga simplemente nombre de usuario y correo electrónico.

Convertir datos de formulario HTML a un archivo PDF con PHP
Las principales funciones realizarán:

– El artículo utiliza la biblioteca Bootstrap 4:

<link rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css”>

– El formulario html incluye 2 campos: nombre de usuario y correo electrónico, botón enviar

El formulario html incluye 2 campos: nombre de usuario y correo electrónico, botón enviar

Utilice PHP para validar datos de entrada, formato de correo electrónico

– Si hay errores, serán notificados a través del bucle for.

<?php
// if errors issset, show it
if (isset($errors)) {
foreach ($errors as $error) { ?>
<?php echo $error; ?>
<?php }
} ?>

Validar datos de entrada, formato de correo electrónico.

Biblioteca Mpdf, con muchas opciones para encontrar el archivo de salida apropiado:

  • Selección de fuente
  • Especificación del tamaño del papel
  • Especificar la orientación del papel: L o P
  • Diseño de margen

– Con opción de archivo de salida:

El archivo se abrirá tan pronto como haga clic en enviar, abra la pestaña del navegador

$mpdf->Output(‘demo.pdf’,’I’);
or
$mpdf->Output();

Descargar archivo: el archivo se descargará inmediatamente después de hacer clic en enviar

$mpdf->Output(‘demo.pdf’,’D’);

El archivo se guardará en el servidor tan pronto como haga clic en enviar

$mpdf->Output(“mydata.pdf”,’F’);

El código PHP se vería así:

<?php
/**
* Require
*/
require_once __DIR__.’/vendor/autoload.php’;

if (isset($_POST[‘viewPdf’])) {
// Get element form data
$username = $_POST[‘username’];
$email = $_POST[’email’];

// Validation username is set
if ($username == ”) {
$errors[] = ‘Username is required’;
}

// Check for a valid email address
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = ‘Please enter a valid email address’;
}

//if no errors carry on
if (!isset($errors)) {
//create html of the data
ob_start(); ?>

<?php
$mpdf = new \Mpdf\Mpdf([
‘fontdata’ => [
‘ipa’ => [
‘R’ => ‘Sun-ExtA.ttf’
]
],
‘mode’ => ‘en’, // Specify the language to use as English(en), Japanese(ja),…
‘format’ => ‘A4’, // Specifying the paper size
‘orientation’ => ‘L’, // Specify the orientation of the paper: L, P
‘default_font_size’ => 7,
‘margin_left’ => 20, // Left margin
‘margin_right’ => 20, // Right margin
‘margin_top’ => 10, // Top margin
‘margin_bottom’ => 10, // Bottom margin
‘margin_header’ => 10, // Header margin
‘margin_footer’ => 10 // Footer margin
]);

header(‘content-type: text/html; charset=utf-8’);
$body = ob_get_clean();

$mpdf->SetDisplayMode(‘fullwidth’);

$mpdf->setFooter(‘Page {PAGENO} / {nb}’);

$mpdf->SetTitle($title);

$mpdf->WriteHTML($body);

// Open tab browser
$mpdf->Output(‘demo.pdf’,’I’);

// Open tab browser
// $mpdf->Output();

// Download file
// $mpdf->Output(‘demo.pdf’,’D’);

// Save to server
// $mpdf->Output(“mydata.pdf”,’F’);
}
} ?>

– Código HTML, ingresa el contenido del formulario y muestra los errores si los hay.

<?php
// if errors issset, show it
if (isset($errors)) {
foreach ($errors as $error) { ?>
<?php echo $error; ?>
<?php }
}
?>

Código html

Tan pronto como haga clic en el botón Enviar, recibirá el siguiente contenido del archivo PDF:

Contenido del archivo PDF

Consejos importantes:

  1. Si sus datos deben exportarse de forma masiva, puede ocurrir un error:

“Fatal error Exception: The HTML code size is larger than pcre.backtrack_limit = 100000”

=> You need to edit it in the php.ini file, for example the following parameters:

“pcre.backtrack_limit = 10000000”

  1. Si desea eliminar la página en blanco al final del documento:

$blankpage = $mpdf->page + 1;

$mpdf->DeletePages($blankpage);

$mpdf->Output();

3. MPDF: Texto largo en tabla td a tamaño pequeño:

Si está apagado, p. $mpdf->shrink_tables_to_fit = 0; se anula mediante una declaración específica para una tabla, por ejemplo:

style=”overflow: wrap”

o

table autosize=”2.4″ …

o

table style=”autosize:2.4;” …

o

table autosize=”1″…

★ Puede consultar Cómo convertir PDF a un archivo de texto usando PHP aquí

1 comentario en «Convertir datos de HTML a archivos PDF con PHP»

Deja un comentario