Ir para conteúdo
cunhar7

[Resolvido] Erro na formatação do dompdf

Recommended Posts

Boa noite a todos, Gostaria de saber se alguém pode me ajudar com o DomPdf. Estou utilizando como base do projeto o codeigniter e bootstrap.

Preciso Gerar um PDF com uma galeria de produtos, o problema é que não consigo forçar uma quebra de linhas. Os itens sempre aparecem um na frete do outro.

 

//controller
    public function ImprimirTrabalho(){

        #pesquisando modelo do trabalho
        $pesquisaModelo = $this->Trabalho->trabalho_layout($this->uri->segment(2));
        #passando Modelo do trabalho para a variavel modelo
        $modelo = $pesquisaModelo['0']['layout'];

        ob_start();
        $this->load->view('header_impressao');
        $this->load->view($modelo);
        $pdf = ob_get_clean();

        $this->pdf->loadHtml($pdf);
        // (Optional) Setup the paper size and orientation
        $this->pdf->setPaper('A4', '');
        // Render the HTML as PDF
        $this->pdf->render();
        // Output the generated PDF to Browser
        $this->pdf->stream("",array("Attachment" => false));


    }

produtos.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde! Para quem está passando ou vai passar pela mesma dificuldade eis como solucionei. A Biblioteca DOMPF trabalha com css 2.1 e ccs 3, sendo assim a soluções rotineiras que implementamos podem nos trazer problemas no que diz respeito a posicionamento de divs e etc...

A solução para meu caso foi posicionar as divs com position: absolute; cada div ficou em uma posição especifica e realizei loops de uma pagina inteira para gerar o PDF d todas as folhas. Mais um detalhe que pode ser útil: Para criar bordas no css 2.1 o elemento border: 2px solid#000; não funciona, e necessário utilizar border: thin solid #000;

Mais um detalhe que se mostrou útil, programar o css com o pdf já renderizado, uma vez que a formatação do css é exibida de maneira diferente no hmtl por conta do css2.1. Espero ter contribuído.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Caio Vargas
      Olá bom dia!
      estou ctiando um sistema de catalogo online onde o mesmo sera gerado em pdf
      escolhi a dompdf 
      porem ele gera o pdf mais ao abrir ele da erro
      atualmente trabalho com estrutura mvc onde tenho pasta themes/nomedotema
      alguem ja passou por isso e saberia como resolver 
    • Por Alvaro_php
      Pessoal boa noite
      Tenho um sistema em Visual Basic 6 que utiliza um documento do Word que é enviado para as empresas, onde tenho algumas flags que são utilizadas para colocar no nome da empresa e endereço e que são enviadas via email

      Estou conseguindo converter esse documento do WORD em PDF sem problemas
      Private Sub ConverterWordParaPDF()

          On Error GoTo TrataErro
          Dim ObjWord2 As Word.Application
          Dim ObjWordDoc2 As Word.Document
          
          Set ObjWord2 = CreateObject('Word.Application')
          ObjWord2.Visible = False
          ObjWord2.DisplayAlerts = wdAlertsNone

          Set ObjWordDoc2 = ObjWord2.Documents.Open(App.Path + '\Documento.doc', True, True, False, Replace(Replace(Replace(Replace(Rs(1), '/', ''), '-', ''), '.', ''), '_', ''))

          ObjWordDoc2.ExportAsFixedFormat OutputFileName:= _
          App.Path + '\Documento.pdf', ExportFormat:=wdExportFormatPDF, _
          OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
          wdExportAllDocument, from:=1, To:=1, Item:=wdExportDocumentContent, _
          IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
          wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
          True, UseISO19005_1:=False
              
          ObjWord2.Visible = False
          ObjWord2.Quit (False)
          Set ObjWord2 = Nothing
      Exit Sub
      TrataErro:
        msgbox 'Erro ao converter o documento'
      End Sub

      Porém a senha que coloquei no word, não está ficando no arquivo pdf após a conversão, e também não achei nenhuma opção para incluir uma senha nesse novo arquivo

      Não estou usando o Crystal e o documento do word é um documento qualquer que o cliente usa, por isso que não da para utilizar o crystal

      Alguém sabe como que eu poderia fazer essa conversão e colocar a senha nesse novo arquivo ou teria alguma outra forma de converter esse documento para pdf que desse para colocar a senha

      Desde já agradeço a todos
    • Por Kefatif
      Prezados, boa tarde!
       
      Em uma tela faço o envio de arquivos PDF para uma pasta reservada para isso.
       
      Estou tendo dificuldade para criar um botão de download na tela de consultas, quando abro a página de consulta ele está me mostrando a seguinte mensagem: "Notice: Undefined variable: row in C:\xampp\htdocs\plataforma\indicadores\consultar.php on line 126"
       
      Podem me ajudar?
       
      <?php include_once 'autenticacao.php'; include_once'../conexao.php'; ?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <title>Envio de Ata</title> <link href="../css/estilo.css" rel="stylesheet"> <!-- Bootstrap Core CSS --> <link href="../css/bootstrap.css" rel="stylesheet"> <!-- Custom CSS --> <link href="../css/modern-business.css" rel="stylesheet"> <!-- Custom Fonts --> <link href="../font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <script src="../js/jquery.min.js"></script> </head> <body> <?php include_once 'nav-menu1.php'; ?> <!-- Page Content --> <div class="container" style="width: 90%"> <?php include_once 'cabecalho.php'; ?> <div class="row"> <?php include_once 'barra-lateral.php'; ?> <!-- Content Column --> <div class="col-md-9" style="width: 80%"> <h4><b>CONSULTAR UNIDADE</b></h4> <form class="form-inline" action="consultar.php" autocomplete="off" method="get"> <div id="form-callcenter"> <label style="width: 30%"> <input type="text" name="nome" class="form-control" placeholder="Digite o nome da unidade" style="width: 100%"> </label> <input type="submit" readonly value="Pesquisar" class="btn btn-primary"> </div> </form> <?php if (isset($_GET["nome"]) ) { $nome = $_GET["nome"]; include_once '../funcoes.php'; $sql = "select A.dt_envio, A.unidade, A.responsavel, A.observacao, A.anexo from controle_ata A where A.unidade like '%".$nome."%' order by A.dt_envio desc"; $result = mysqli_query($con, $sql); if (mysqli_num_rows($result) > 0) { ?> <table class="table table-hover table-bordered" id="tabela-dispensacao2"> <tr> <th>Unidade</th> <th>Data do envio</th> <th>Responsável</th> <th>Observação</th> <th>Ata</th> <th>Download</th> </tr> <?php if($row["anexo"] == ''){ $cor = "red"; }else{ $cor = "blue"; } while ($row = mysqli_fetch_array($result)){ foreach($row as $key => $values){ $row[$key]= utf8_encode($values); } ?> <tr> <td><?php echo $row["unidade"]?></td> <td><?php echo dataTela($row["dt_envio"]); ?></td> <td><?php echo $row["responsavel"]; ?></td> <td><?php echo $row["observacao"] ?></td> <td><?php echo $row["anexo"] ?></td> <td><a class="<?php if($row["ANEXO"] == ''){echo "link-nao-ativo";}?>" href='anexos/<?php echo $row["ANEXO"] ?>' target="_blank"> <i style="color:<?php echo $cor ?>" class="glyphicon glyphicon-download-alt"></i> </a> </td> </tr> <?php }//ENCERRANDO O WHILE ?> </table> <?php }else{ echo "Nenhuma unidade encontrada!<br>"; } } ?> <?php mysqli_close($con); ?> </div> </div> <!-- /.row --> </div> <!-- /.container --> <!-- jQuery --> <script src="../js/jquery.js"></script> <!-- Bootstrap Core JavaScript --> <script src="../js/bootstrap.min.js"></script> </body> </html>  
       
      Agradeço a ajuda desde já!
    • Por oliveiros
      Saudações.
      Alguém conseguiu alterar esse código para funcionar com o dompdf mais atual e php 7.4?
      :seta:
       
      Notei que com a versão antiga era possível exibir o documento no navegador sem salvar, e agora, ele salva primeiro num diretório tamporário para posterior exibição no navegador(firefox). Apenas observação. Esse não é o problema
      Outra alteração que fiz no arquivo:
      $papel = array(0,0,852,227.20);
      $dompdf->set_paper($papel, 'portrait');
      system("lpr -P MP-4200_TH_Miniprinter  -#1 -o landscape -o fit-to-page /var/www/html/centralmix/venda/venda.pdf");
       
      Gratidão!
       
      Pessoal, encontrei a solução reestruturando o código html com o php.
      Isto leva o script a funcionar com qualquer versão do php
      Porém, com a versão mais atual da dompdf não consigo por mais que uma tabela no documento. No meu caso preciso disso.
      Carregar a página  php com $html = file_get_contents('exemplo.php'); não funcionou.
      A solução que encontrei, não sei se é o correto, mas funcionou foi:
      Separar o html em outro arquivo;
      Pegar o conteúdo html do arquivo com  ob_get_contents(): $comanda = ob_get_contents();
      Colocar o conteúdo na sessão:  $_SESSION['comanda'] = $comanda;
      Depois no arquivo onde está a dompdf:
      $comanda = $_SESSION['comanda'];
      $comanda = utf8_decode($comanda);
      $dompdf->loadHtml($comanda);
       
        Notei que
       
    • Por Wanderson Moreira
      Opa, blz?
      Alguém me da um help?
       
      Estou criando um relatorio em PDF com o dompdf e ao adicionar algumas imagens no documento, as mesmas saem deitadas.
       
      No html as fotos saem com a orientação normal(em pé) conforme foi inserida
       
      alguém sabe o que pode ser?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.