D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
novonote
/
adm
/
app
/
gre
/
Views
/
Termo
/
Filename :
VieImpTermo.php
back
Copy
<?php require_once($_SERVER['DOCUMENT_ROOT'] . '/novonote/adm/vendor/autoload.php'); use PhpOffice\PhpWord\TemplateProcessor; // Limpa sessões anteriores unset($_SESSION['pdf_gerado'], $_SESSION['docx_gerado']); // Dados principais $formData = $this->Dados['form'][0]; $itens = $this->Dados['dadosItens']; $num_contrato = 'Termo_'.$formData['numero_contrato']; $contratante = $formData['nome_cliente']; // Função para obter caminho do modelo function caminhoContratoModelo() { return realpath(__DIR__ . '/../../../../ContratosNovonote/TermoEntrega.docx'); } // Diretório de saída $destinoDir = __DIR__ . '/../../../../ContratoImpresso/impContrato'; if (!is_dir($destinoDir)) { mkdir($destinoDir, 0777, true); } // Caminhos dos arquivos $saidaDocx = "$destinoDir/{$num_contrato}_{$contratante}.docx"; $saidaPdf = "$destinoDir/{$num_contrato}_{$contratante}.pdf"; //var_dump($saidaPdf); //die; // Dados do contrato $dadosContrato = [ 'numero_contrato' => $formData['numero_contrato'], 'nome_cliente' => $formData['nome_cliente'], 'municipio_cliente' => $formData['municipio_cliente'], 'tipo_docto' => $formData['tipo_docto'], 'num_documento' => $formData['num_documento'], 'data_extenso' => $formData['data_extenso'] ]; try { $modeloContrato = caminhoContratoModelo(); if (!$modeloContrato || !file_exists($modeloContrato)) { throw new Exception("Modelo de contrato não encontrado."); } $template = new TemplateProcessor($modeloContrato); // Preenche variáveis principais foreach ($dadosContrato as $chave => $valor) { $template->setValue($chave, $valor); } // Preenche itens (garanta que o modelo tenha ${num}, ${nome_equipamento}, ${qtde}, ${qtde_extenso} em uma tabela) $dadosItens = []; // var_dump($itens); foreach ($itens as $i => $item) { $dadosItens[] = [ 'num' => $i + 1, 'nome_equipamento' => $item['nome_equipamento'], 'qt' => $item['qtde'], 'qex' => $item['qtde_extenso'] ]; } //var_dump( $dadosItens); die; // Clona linha da tabela com marcador ${num} // $template->cloneRowAndSetValues('num', $dadosItens); $template->cloneRowAndSetValues('qt', $dadosItens); // Salva o DOCX $template->saveAs($saidaDocx); if (!file_exists($saidaDocx)) { throw new Exception("Falha ao salvar o DOCX."); } // Converte para PDF usando LibreOffice $sofficePath = '"' . SOFFIDEPATH . '"'; // Certifique-se que SOFFIDEPATH está definido corretamente $cmd = $sofficePath . ' --headless --convert-to pdf --outdir "' . $destinoDir . '" "' . $saidaDocx . '"'; exec($cmd, $output, $resultCode); if ($resultCode !== 0 || !file_exists($saidaPdf) || filesize($saidaPdf) === 0) { throw new Exception("Falha na conversão para PDF."); } // Salva caminhos na sessão $_SESSION['pdf_gerado'] = $saidaPdf; $_SESSION['docx_gerado'] = $saidaDocx; // Redireciona para a view original header("Location: " . URLADM . "contrato-imprimir/imp-contrato/"); exit; } catch (Exception $e) { if (ob_get_length()) { ob_end_clean(); } echo "❌ Erro: " . $e->getMessage(); }