CD
problema em exibir pdf com TElement
Pessoal está acontecendo uma coisa estranha aqui.
Meu ambiente de desenvolvimento é o XAMPP no Windows.
Ontem passei o sistema para um Ubuntu 22.04 com Mysql e Apache.
Funciona tudo bem o sistema.
Porem quando clico em um action do datagrid para abrir um PDF em um TWindow ele não exibe o PDF quando estou no computador, mas exibe o PDF quando uso o celular. No ambiente de desenvolvimento, não apresenta esse problema.
Método que estou usando:
Meu ambiente de desenvolvimento é o XAMPP no Windows.
Ontem passei o sistema para um Ubuntu 22.04 com Mysql e Apache.
Funciona tudo bem o sistema.
Porem quando clico em um action do datagrid para abrir um PDF em um TWindow ele não exibe o PDF quando estou no computador, mas exibe o PDF quando uso o celular. No ambiente de desenvolvimento, não apresenta esse problema.
Método que estou usando:
<?phppublic function onOpenPdf($param) { $idsolicitacao = $param['idsolicitacao']; try { if (isset($param['key'])) { $key = $param['key']; TTransaction::open('intranet'); $solicitacao = new Solicitacao($key); if ($solicitacao->oficio) // Agora oficio contém o caminho do arquivo { $filePath = $solicitacao->oficio; // Constrói o caminho completo if (file_exists($filePath)) { $baseUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://{$_SERVER['HTTP_HOST']}/"; // Usa Google Docs Viewer (recomendado) $window = TWindow::create('Visualizar Ofício', 0.8, 0.8); $object = new TElement('object'); $object->data = $baseUrl . $filePath; // Usa realpath para obter o caminho absoluto $object->type = 'application/pdf'; $object->style = "width: 100%; height:calc(100% - 10px)"; $window->add($object); //$object->add('O navegador não suporta a exibição deste conteúdo, <a style="color:#007bff;" target=_newwindow href="'.$object->data.'"> clique aqui para baixar</a>...'); $window->show(); } else { new TMessage('error', 'Arquivo não encontrado: ' . $filePath); } } else { new TMessage('info', 'Nenhum ofício anexado.'); } TTransaction::close(); } } catch (Exception $e) { new TMessage('error', $e->getMessage()); TTransaction::rollback(); } }?>
Porem se eu uso um var_dump para pegar o valor que está em $object->data e copio o valor e colo no navegador ele abre normalmente o pdf.
Ou seja, permissão não é o problema.
IMAGEM Computador: https://i.postimg.cc/rmmN943f/erro-intranet.png
IMAGEM Celular: https://i.postimg.cc/W3SF5pxS/64-BC31-E0-EA01-48-B5-BC22-6-CD0-F840-AA30.jpg
Editado 07/02/2025 (há 3 meses) - Clique para ver alterações
Ah, não é meu código que está errado.
Na tela de programas do template do adianti ao exportar a lista de programas para pdf também fica em branco o twindow
VER AQUI: https://i.postimg.cc/Kv2Jpvyw/intranet-PDF1.png
Testei aqui e funcionou normalmente:
https://framework.adianti.me/template/index.php?class=SystemProgramList
No $object->data, vc não precisa colocar o domínio, nem protocolo quando o arquivo é dentro do sistema.
Ex: $object->data = 'app/output/document.pdf';