<?php defined('BASEPATH') OR exit('No direct script access allowed');

/**
 * dompdf_helper.php — substituído por mPDF (PHP 8.1 compatível)
 *
 * Mantém a mesma assinatura da função original:
 *   pdf_create($html, $filename='', $stream=TRUE)
 *
 * Todos os controllers do sistema continuam funcionando
 * sem alteração nenhuma.
 *
 * Pré-requisito: mPDF instalado via instalar_mpdf.php
 * O vendor/ fica na raiz do sistema (mesma pasta do index.php)
 */

function pdf_create($html, $filename = '', $stream = TRUE)
{
    // Localiza o autoload do mPDF
    // Caminho 1: vendor/ na raiz do sistema (padrão após instalar_mpdf.php)
    $autoload_paths = [
        FCPATH . 'vendor/autoload.php',
        APPPATH . '../vendor/autoload.php',
        APPPATH . 'third_party/mpdf_vendor/autoload.php',
    ];

    $autoload = null;
    foreach ($autoload_paths as $path) {
        if (file_exists($path)) {
            $autoload = $path;
            break;
        }
    }

    if (!$autoload) {
        show_error('mPDF não encontrado. Execute o instalador instalar_mpdf.php primeiro. Caminhos verificados: ' . implode(', ', $autoload_paths));
        return;
    }

    require_once $autoload;

    // Pasta temporária com permissão de escrita
    $tmp_dir = sys_get_temp_dir() . '/mpdf_tmp_' . get_instance()->session->userdata('admin')['id'];
    if (!is_dir($tmp_dir)) {
        @mkdir($tmp_dir, 0775, true);
    }
    // Fallback: pasta uploads do sistema
    if (!is_writable($tmp_dir)) {
        $tmp_dir = FCPATH . 'uploads/tmp_pdf';
        if (!is_dir($tmp_dir)) @mkdir($tmp_dir, 0775, true);
    }

    $mpdf = new \Mpdf\Mpdf([
        'mode'        => 'utf-8',
        'format'      => 'A4',
        'orientation' => 'P',
        'tempDir'     => $tmp_dir,
        'autoScriptToLang' => true,
        'autoLangToFont'   => true,
        'default_font'     => 'dejavusans',
        // Margem padrão compatível com o layout anterior (dompdf)
        'margin_top'    => 10,
        'margin_bottom' => 10,
        'margin_left'   => 15,
        'margin_right'  => 15,
    ]);

    $mpdf->WriteHTML($html);

    $nome = $filename ? $filename . '.pdf' : 'documento.pdf';

    if ($stream) {
        // Envia direto para o browser (comportamento original do dompdf)
        $mpdf->Output($nome, \Mpdf\Output\Destination::INLINE);
    } else {
        // Retorna como string binária (usado por quem salva em disco)
        return $mpdf->Output($nome, \Mpdf\Output\Destination::STRING_RETURN);
    }
}
