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, ...
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:

<?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

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (3)


CD

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
PD

Testei aqui e funcionou normalmente:
https://framework.adianti.me/template/index.php?class=SystemProgramList
PD

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';