Autor Tópico: Relatório em formato de planilha utilizando TCPDF  (Lida 1235 vezes)

Spybr

  • Iniciante
  • **
  • Mensagens: 79
Relatório em formato de planilha utilizando TCPDF
« Online: Março 02, 2016, 10:35:12 pm »
Estou utilizando o TCPDF para fazer um relatorio que gera várias planilhas com os resultados da consulta do banco.

Está funcionando tudo certo, entretanto quando muda de pagina está quebrando no meio da celula.




Alguem sabe uma forma de corrigir esse problema? Gostaria que a divisão ficasse em cima da linha da celula.
Outra coisa, como faço para centralizar os dados no meio da celula?


Segue abaixo o codigo que estou utilizando para gerar e preecher a tabela:

//------------------------------------------
      //Generating the HEADER Table
      //
      $tbl = '<table border="1" align="center">
         <tr bgcolor="#DDDDDD" valign="middle">
            <th rowspan="2">a1<br></th>
            <th rowspan="2">a2<br></th>
            <th rowspan="2">a3</th>
            <th rowspan="2">a4<br></th>
            <th rowspan="2">a5<br></th>
            <th colspan="2">b<br></th>
            <th rowspan="2" width="80">a8)<br></th>
            <th rowspan="2">a9 <br></th>
            <th rowspan="2">a10<br></th>
            <th rowspan="2">a11<br></th>
            <th rowspan="2">a12<br></th>
            <th rowspan="2">a13<br></th>      
         </tr>
         <tr bgcolor="#DDDDDD" valign="middle">
            <td>a6</td>
            <td>a7</td>
         </tr>';

      //</table>';
      
      while (!$rs->EOF)
      {
         $tbl = $tbl . "<tr>";
            $tbl = $tbl . "<td>".$rs->fields[0]."</td>";
            $tbl = $tbl . "<td>".$rs->fields[1]."</td>";
            $tbl = $tbl . "<td>".$rs->fields[2]."</td>";
            $tbl = $tbl . "<td>".utf8_decode($rs->fields[3])."</td>";
            $tbl = $tbl . "<td>".utf8_decode($rs->fields[4])."</td>";
            $tbl = $tbl . "<td>".utf8_decode($rs->fields[5])."</td>";
            $tbl = $tbl . "<td>".utf8_decode($rs->fields[6])."</td>";
            $tbl = $tbl . "<td>".utf8_decode($rs->fields[7])."</td>";
            $tbl = $tbl . "<td>".$rs->fields[8]."</td>";
            $tbl = $tbl . "<td>".$rs->fields[9]."</td>";
            $tbl = $tbl . "<td>".$rs->fields[10]."</td>";
            $tbl = $tbl . "<td>".$rs->fields[11]."</td>";
            $tbl = $tbl . "<td>".$rs->fields[12]."</td>";
         $tbl = $tbl . "</tr>";
         $rs->MoveNext();
      }
      $tbl = $tbl . "</table>";

      $pdf->writeHTML($tbl, true, false, false, false, '');
« Última modificação: Março 02, 2016, 10:37:02 pm por Spybr »

Cleidson dos Santos

  • Intermediário
  • ***
  • Mensagens: 176
    • Sistema para controle e Gerenciamento de Manutenção
    • Email
Re:Relatório em formato de planilha utilizando TCPDF
« Responder #1 Online: Março 02, 2016, 11:18:46 pm »
Quando o relatório é montado em HTML isso acontece.
Você pode tentar resolver alterando o valor da função $pdf->SetAutoPageBreak(TRUE, 10);.

Caso a altura das células seja fixo, você pode usar um for e montar  tabela em php.

      for($j =0; $j < 13; $j++) {
         $pdf->Cell($20, 5,'TEXTO', 1, 0, 'R', 1);
      }
Quando a tabela NÃO é montada em HTML não acontece esse problema.
« Última modificação: Março 06, 2016, 01:54:46 pm por Cleidson dos Santos »
Cleidson dos Santos
cleidsoncarneirodossantos@gmail.com
Skype: cleidson_santos1
WhatsApp: (15) 99635-4862

Marcelo Baptista

  • Intermediário
  • ***
  • Mensagens: 104
Re:Relatório em formato de planilha utilizando TCPDF
« Responder #2 Online: Março 03, 2016, 08:45:02 am »
Use este comando para ter uma quebra mais eficiente, assim evita que quebre no meio da célula:

$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);


Spybr

  • Iniciante
  • **
  • Mensagens: 79
Re:Relatório em formato de planilha utilizando TCPDF
« Responder #3 Online: Março 03, 2016, 01:28:38 pm »
Já estava com esse comando ativado e nao resolveu.
$pdf->SetAutoPageBreak(TRU$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

Sobre a utilização do FOR o problema que a quantidade de linhas na tabela nâo é fixo, depende da quantidade de resultados da consulta sql.

Cleidson dos Santos

  • Intermediário
  • ***
  • Mensagens: 176
    • Sistema para controle e Gerenciamento de Manutenção
    • Email
Re:Relatório em formato de planilha utilizando TCPDF
« Responder #4 Online: Março 03, 2016, 01:30:40 pm »
A questão do for, é que não faz essa quebra na celula.
E VC teria dois for, um para as colunas e outro para as linhas.
Cleidson dos Santos
cleidsoncarneirodossantos@gmail.com
Skype: cleidson_santos1
WhatsApp: (15) 99635-4862

Spybr

  • Iniciante
  • **
  • Mensagens: 79
Re:Relatório em formato de planilha utilizando TCPDF
« Responder #5 Online: Março 06, 2016, 01:11:32 pm »
Mais alguem aí para dar uma ajuda?

Marcelo Baptista

  • Intermediário
  • ***
  • Mensagens: 104
Re:Relatório em formato de planilha utilizando TCPDF
« Responder #6 Online: Março 09, 2016, 08:36:45 am »
Não use as tags html para fazer as grades, use do próprio código TCPDF.

Haroldo

  • Expert
  • *****
  • Mensagens: 6293
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Relatório em formato de planilha utilizando TCPDF
« Responder #7 Online: Março 10, 2016, 12:59:51 pm »
a cada linha impressa use o get_y para pegar a ultima altura impressa, se o valor + altura de uma linha for maior for maior que um determinado valor (altura da pagina) execute a criação de uma nova pagina.


Spybr

  • Iniciante
  • **
  • Mensagens: 79
Re:Relatório em formato de planilha utilizando TCPDF
« Responder #8 Online: Março 15, 2016, 07:49:54 am »
Estou tentando fazer a tabela em HTML mas não estou conseguindo alinhar os dados dentro da celula. Ja adicionei o vertical-align: middle; mas no scriptcase o dado não fica alinhado verticalmente na célula. Testei o mesmo código no w3school e funcionou como deveria, mas no black do scriptcase não funciona. Alguém saberia me dizer o que pode ser?

http://www.w3schools.com/html/tryit.asp?filename=tryhtml_default








<!DOCTYPE html>
<html>
<head>
<style>
table, td, th {
    border: 1px solid black;
       vertical-align: middle;
     text-align: center;

}

table {
    border-collapse: collapse;
    width: 100%;
}

td {
    height: 50px;
     text-align: center;
}
</style>
</head>
<body>

<table>
         <tr>
            <th rowspan="2">ANO<br></th>
            <th rowspan="2">EVT<br></th>
            <th rowspan="2">PRIORIDADE</th>
            <th rowspan="2">ÁREA DE CONHECIMENTO<br></th>
            <th rowspan="2">CURSO<br></th>
            <th colspan="2">FINALIDADE<br></th>
            <th rowspan="2" width="80">LOCAL (INSTITUIÇÃO/CIDADE)<br></th>
            <th rowspan="2">DURAÇÃO (SEMANAS)<br></th>
            <th rowspan="2">LOCAL<br></th>
            <th rowspan="2">SOL<br></th>
            <th rowspan="2">PÚBLIVO ALVO<br></th>
            <th rowspan="2">VÍNCULO/DISSEMINAÇÃO DESEJADA<br></th>      
         </tr>
         <tr>
            <td>CARGO</td>
            <td>PROJETO</td>
         </tr>
                      <tr>
            <td>a1</td>
            <td>a2</td>
            <td>a3</td>
            <td>a4</td>
            <td>a5</td>
            <td>a6</td>
            <td>a7</td>
            <td>a8</td>
            <td>a9</td>
            <td>a10</td>
            <td>a11</td>
            <td>a12</td>
            <td>a13</td>

         </tr>
</tr>
                      <tr>
            <td>a1</td>
            <td>a2</td>
            <td>a3</td>
            <td>a4</td>
            <td>a5</td>
            <td>a6</td>
            <td>a7</td>
            <td>a8</td>
            <td>a9</td>
            <td>a10</td>
            <td>a11</td>
            <td>a12</td>
            <td>a13</td>

         </tr>
         </table>

      </body>
      </html>

Cleidson dos Santos

  • Intermediário
  • ***
  • Mensagens: 176
    • Sistema para controle e Gerenciamento de Manutenção
    • Email
Re:Relatório em formato de planilha utilizando TCPDF
« Responder #9 Online: Junho 22, 2016, 04:57:45 pm »
O TCPDF não alinha verticalmente HTML.
Cleidson dos Santos
cleidsoncarneirodossantos@gmail.com
Skype: cleidson_santos1
WhatsApp: (15) 99635-4862

Willian Fernando

  • Expert
  • *****
  • Mensagens: 1154
  • .....
    • Email
Re:Relatório em formato de planilha utilizando TCPDF
« Responder #10 Online: Junho 22, 2016, 06:21:14 pm »
Não use as tags html para fazer as grades, use do próprio código TCPDF.