DOMPDF, fix de error en directorio temporal

Recientemente me topé con un problema al trabajar con la librería DOMPDF, utilizada para generar PDFs en PHP a partir de código HTML. Me mostraba un error en pantalla y la creación del PDF no se llevaba a cabo.

Más puntualmente me pasaba en una Mac, en distintas PCs con Windows el problema no se presentaba. Me tuvo bastante tiempo dándole vueltas hasta que encontré una solución, quizá les pueda servir.

El error decía algo así:

Message:  file_put_contents(): Filename cannot be empty
Filename: src/FontMetrics.php

Brevemente explicado, lo que sucedía es que el sistema estaba intentando acceder al directorio de almacenamiento de archivos temporales a través de la función de PHP sys_get_temp_dir() y dicho directorio no era accesible, por no existir o por permisos de escritura.

Entonces la solución la logré usando las opciones de configuración del propio DOMPDF junto a la posibilidad de PHP de crear directorios.

<?php
// Incluyo la librería
require 'vendor/autoload.php';
use Dompdf\Dompdf;
use Dompdf\Options;

// Algo de código...

// Estas son las líneas mágicas
// Path temporal
$temp_dir = '/path/to/dompdf_tmp/';
// Si el path no existe lo creo
if(!is_dir($temp_dir)){
    mkdir($temp_dir, 0777, true);
}
// Seteo el path creado como directorio temporal para DOMPDF
$options->set('tempDir', $temp_dir);

// Instancio DOMPDF
$dompdf = new DOMPDF($options);

// Código de generación...
?>

Saludos!

Deja un comentario

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