Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Problemas com PDF no celular Estou com um problema no qual o arquivo pdf abre normalmente acessando pelo computador já pelo celular não, fica um botão abrir no meio da tela e não acontece nada....
HM
Problemas com PDF no celular  
Estou com um problema no qual o arquivo pdf abre normalmente acessando pelo computador já pelo celular não, fica um botão abrir no meio da tela e não acontece nada.

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (10)


CO

No arquivo AdiantiStandardList.php, pasta libadiantibase, troque na function onExportPDF o objeto de 'object' para 'iframe' e 'data' para 'src' que voltara a funcionar no mobile.

  1. <?php
  2.             $output 'app/output/'.uniqid().'.pdf';
  3.             $this->exportToPDF($output);
  4.             
  5.             $window TWindow::create('Export'0.80.8);
  6.             $object = new TElement('iframe');
  7.             $object->{'src'} = $output;
  8. //            $object = new TElement('object');
  9. //            $object->{'data'}  = $output;
  10.             $object->{'type'}  = 'application/pdf';
  11.             $object->{'style'} = "width: 100%; height:calc(100% - 10px)";
  12.             $window->add($object);
  13.             $window->show();
  14. ?>
CC

Olá Claudio, estou passando por esse problema em alguns celular androide, só que no meu caso é pior ainda, não mostra nem essa opção de abrir, ja fui em ativar popup de todos os aplicativos e nada, estou usando o meu aplicativo e faz a chamada do link do meu domínio , em navegadores nativos, funciona perfeito! Você já ativou popup???

Espero der ajudado!
HM

Obrigado Cláudio, funcionou!
CC

Claudio e Helder!

Fiz essas mudanças e continua não abrindo os pdfs gerados no celular!

Clico em gerar pdf e nada, só mostra pra liberar popups e mais nada!!!
HM

Carlos, poderia mostrar seu código?
CC

Olá Helder,

Você fala qual o código, a do lib/adianti/lib/AdiantiStandardListTrait.php?

No caso de gerar PDF, estou com esse problema em todos os meus arquivos , somente em alguns celulares que não abre nada somente no computador!

Uso o Builder para gerar Documentos pdf, códigos gerados pelo Builder por isso achei estranho!

OBS: Foi na atualização do FW 7.3 que começou a não gerar pdf em alguns celulares, não em todos!
HM

Fiz dessa forma como o Claudio falou.
alterei essa $object = new TElement('iframe'); colocando iframe no lugar de object
$object->src = $file; e src no lugar de data

public function onExportPdf(){ $layout = clone $this->html; $contents = file_get_contents('app/resources/styles-print.html') . $layout->getContents(); $options = new \Dompdf\Options(); $options->setChroot(getcwd()); $dompdf = new \Dompdf\Dompdf($options); $dompdf->loadHtml($contents); $dompdf->setPaper("a5", "portrail"); $dompdf->render(); //$nome = md5(time() . rand(0, 1000)); $file = 'app/output/document.pdf'; file_put_contents($file, $dompdf->output()); $window = TWindow::create('Bilhete', 0.8, 0.8); $object = new TElement('iframe'); //$object->src = $file . '?rndval=' . uniqid(); $object->src = $file; $object->type = 'application/pdf'; $object->style = "width: 100%; height:calc(100% - 10px)"; $window->add($object); $window->show(); }
HM

Fiz dessa forma como o Claudio falou.
alterei essa $object = new TElement('iframe'); colocando iframe no lugar de object
$object->src = $file; e src no lugar de data

  1. <?php
  2.  public function onExportPdf(){
  3.         $layout = clone $this->html;
  4.         $contents file_get_contents('app/resources/styles-print.html') . $layout->getContents();
  5.         $options = new \Dompdf\Options();
  6.         $options->setChroot(getcwd());
  7.         $dompdf = new \Dompdf\Dompdf($options);
  8.         $dompdf->loadHtml($contents);
  9.         $dompdf->setPaper("a5""portrail");
  10.         $dompdf->render();
  11.         //$nome = md5(time() . rand(0, 1000));
  12.         $file 'app/output/document.pdf';
  13.         file_put_contents($file$dompdf->output());
  14.         
  15.         $window TWindow::create('Bilhete'0.80.8);
  16.         $object = new TElement('iframe');
  17.         //$object->src  = $file . '?rndval=' . uniqid();
  18.         $object->src   $file;
  19.         $object->type  'application/pdf';
  20.         $object->style "width: 100%; height:calc(100% - 10px)";
  21.         $window->add($object);
  22.         $window->show();
  23.     }
  24. ?>
CC

Olá helder,

Obrigado pelo retorno!

Cara acabei de fazer as mudanças, tais como: libadiantibaseAdiantiStandardListTrait

só que o estranho que não faz nada, mudei até onExportPDF para onnExportPDF para ver se dá algum erro, e nada!

parece que nem passa por esse arquivo ao gerar PDF no FW!


Que doido isso, em qual lugar você esta fazendo as mudanças?


aqui original esta assim:

/**
* Export datagrid as PDF
*/
public function onExportPDF($param)
{
try
{
$output = 'app/output/'.uniqid().'.pdf';
$this->exportToPDF($output);

$window = TWindow::create('Export', 0.8, 0.8);

$object = new TElement('object');
$object->data = $output;

$object->type = 'application/pdf';
$object->style = "width: 100%; height:calc(100% - 10px)";
$window->add($object);
$window->show();
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
}
}
HM

No meu caso eu fiz dentro da minha própria classe porque precisava imprimir uma certa página html

  1. <?php
  2. class RecuperarCodigo extends TPage{
  3.     private $userId;
  4.     private $html;
  5.     use Adianti\base\AdiantiStandardListTrait;
  6.     public function __construct()
  7.     {
  8.         parent::__construct();
  9.         $this->userId TSession::getValue('userid');
  10.         $this->onInputDialog();
  11.     }
  12.     public function onInputDialog()
  13.     {
  14.         
  15.         $form = new BootstrapFormBuilder('input_form');
  16.         $codigo = new TEntry('codigo');
  17.         $form->addFields( [ new TLabel('Código: ')], [$codigo]);
  18.         
  19.         $form->addAction('recuperar', new TAction([__CLASS__'onConfirm']), 'far:check-circle blue');
  20.     
  21.         new TInputDialog('Recuperar Código'$form);
  22.     }
  23.     public function onConfirm($param){
  24.         try {
  25.             TTransaction::open('permission');
  26.                 $sorteio CadastroSorteio::last();
  27.                 $mov_aposta MovAposta::where('codigo''like'"%{$param['codigo']}%")->where('sorteio_id''='$sorteio->id)->load();
  28.                 $mov_aposta_obj $mov_aposta[0];
  29.                 if($mov_aposta_obj->validado == 'N'){
  30.                     $mov_aposta_obj->usuario_id $this->userId;
  31.                     $mov_aposta_obj->validado 'Y';
  32.                     $mov_aposta_obj->store();
  33.                     $apostas Aposta::where('mov_aposta_id''=' ,$mov_aposta_obj->id)->load();
  34.                     $jogos = [];
  35.                     foreach($apostas as $aposta){
  36.                         $obj = new Aposta($aposta->id);
  37.                         $obj->usuario_id $this->userId;
  38.                         $obj->store();
  39.                         $cad_jogos  = new CadastroJogos($obj->time_id);
  40.                         $casa       = new CadastrarTime($cad_jogos->visitado);
  41.                         $fora       = new CadastrarTime($cad_jogos->visitante); 
  42.                         
  43.                         $jogos[] = ['casa' => $casa->nome_time'fora' => $fora->nome_time'palpite' => $aposta->palpite == 'Casa' 'Fora'];
  44.                     }
  45.                     
  46.                     $user = new SystemUser($this->userId);
  47.                     $pontuacao =  Pontuacao::where('mov_aposta_id''='$mov_aposta_obj->id)->load();
  48.                     
  49.                     $sorteado   '';
  50.                     $premio     0;
  51.                     if(!empty($pontuacao[0]['sorteado']) == 'Y' && $pontuacao[0]['sorteado'] != NULL){
  52.                         $sorteado 'Sim';
  53.                     }else if(!empty($pontuacao[0]['sorteado']) == 'N' && $pontuacao[0]['sorteado'] != null){
  54.                         $sorteado 'Não';
  55.                     }else{
  56.                         $sorteado   'Aguardando Resultado';
  57.                     }
  58.                     if(!empty($pontuacao[0]['sorteado_valor']) != null){
  59.                         $premio $pontuacao[0]['sorteado_valor'];
  60.                     }
  61.                     $informacoes = [
  62.                         'data'          => $mov_aposta_obj->data_hora,
  63.                         'login'          => $user->login,
  64.                         'nome_bilhete'  => $mov_aposta_obj->nome,
  65.                         'pago'          => $mov_aposta_obj->pago == 'Y' 'Sim' 'Não',
  66.                         'sorteado'      => $sorteado,
  67.                         'premio'        => $premio,
  68.                         'bilhete'       => $mov_aposta_obj->codigo
  69.                     ];
  70.                     $this->html = new THtmlRenderer('app/resources/bilhete.html');
  71.                     $this->html->enableSection('bilhete'$informacoes);
  72.                     $this->html->enableSection('jogos'$jogostrue);
  73.                     $this->onExportPdf();       
  74.                     
  75.                 }else{
  76.                     new TMessage('error''O Bilhete já foi validado');
  77.                 }
  78.                 TTransaction::close();
  79.         } catch (Exception $e) {
  80.             new TMessage('error'$e->getMessage());
  81.             TTransaction::rollback();
  82.         }
  83.         
  84.     }
  85.     public function onExportPdf(){
  86.         $layout = clone $this->html;
  87.         $contents file_get_contents('app/resources/styles-print.html') . $layout->getContents();
  88.         $options = new \Dompdf\Options();
  89.         $options->setChroot(getcwd());
  90.         $dompdf = new \Dompdf\Dompdf($options);
  91.         $dompdf->loadHtml($contents);
  92.         $dompdf->setPaper("a5""portrail");
  93.         $dompdf->render();
  94.         //$nome = md5(time() . rand(0, 1000));
  95.         $file 'app/output/document.pdf';
  96.         file_put_contents($file$dompdf->output());
  97.         
  98.         $window TWindow::create('Bilhete'0.80.8);
  99.         $object = new TElement('iframe');
  100.         //$object->src  = $file . '?rndval=' . uniqid();
  101.         $object->src   $file;
  102.         $object->type  'application/pdf';
  103.         $object->style "width: 100%; height:calc(100% - 10px)";
  104.         $window->add($object);
  105.         $window->show();
  106.     }
  107. }
  108. ?>