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:
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
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:
- <?php
- public 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á 1 mês) - 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';