Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marisa Lima

Multicell fpdf em php

Recommended Posts

Bom dia,

 

preciso criar uma formulário com n páginas e uma determinada estrutura até ai tudo bem. O meu problema está quando vou buscar os dados à base de dados e construo a tabela ao mudar de página a mesma perde a configuração toda. A minha tabela vai conter o seguinte formato:

 

 

while($trans=mysql_fetch_array($compet))
{
if($cursor_y+$altura>=230)
{ // 230 É O TAMANHO MAXIMO ANTES DO RODAPE
$pdf->AddPage(); // SE ULTRAPASSADO, É ADICIONADO UMA PÁGINA
$cursor_y=59; // E O Y INICIAL É RESETADO
}

$pdf->SetXY($alt,$cursor_y);
$pdf->MultiCell(30,$altura,utf8_decode('Competência'),1,'L');
$pdf->SetXY($lag,$cursor_y);
$pdf->MultiCell(150, $altura, utf8_decode($trans['competencia']), 1,'L');
$cursor_y+=$ver_spacing1;

$pdf->SetXY($alt,$cursor_y);
$pdf->MultiCell(30,$altura,utf8_decode('Indicador'),1,'L');
$pdf->SetXY($lag,$cursor_y);
$pdf->MultiCell(150, $altura, utf8_decode($trans['indicador']), 1,'L');
$cursor_y+=$ver_spacing1;

$pdf->SetXY($alt,$cursor_y);
$pdf->MultiCell(30,$altura,utf8_decode('Nível'),1,'L');
$pdf->SetXY($lag,$cursor_y);
$pdf->MultiCell(150, $altura, utf8_decode($trans['nivel_esperado']), 1,'L');
$cursor_y+=$ver_spacing1;

$pdf->SetXY($alt,$cursor_y);
$pdf->MultiCell(30,$altura,utf8_decode('Avaliação/Classificação'),1,'L');
$pdf->SetXY($lag,$cursor_y);
$pdf->MultiCell(150, $altura, utf8_decode($trans['auto_avaliacao']), 1,'L');
$cursor_y+=$ver_spacing1;

$pdf->SetXY($alt,$cursor_y);
$pdf->MultiCell(30,$altura,utf8_decode('Justificação Colaborador'),1,'L');
$pdf->SetXY($lag,$cursor_y);
$pdf->MultiCell(150, $altura, utf8_decode($trans['justificacao_colaborador']), 1,'L');
$cursor_y+=$ver_spacing1;

$pdf->SetXY($alt,$cursor_y);
$pdf->MultiCell(30,$altura,utf8_decode('Avaliação Superior Hierárquico'),1,'L');
$pdf->SetXY($lag,$cursor_y);
$pdf->MultiCell(150, $altura, utf8_decode($trans['chefe']), 1,'L');
$cursor_y+=$ver_spacing1;

$pdf->SetXY($alt,$cursor_y);
$pdf->MultiCell(30,$altura,utf8_decode('Justificação Responsável Hierárquico'),1,'L');
$pdf->SetXY($lag,$cursor_y);
$pdf->MultiCell(150, $altura, utf8_decode($trans['justificacao_chefe']), 1,'L');
$cursor_y+=$ver_spacing1;
}

 

 

quando cabe tudo na mesma página e o Y volta ao seu valor inicial não existe problema, mas se por exemplo chega a meio da tabela e tem de mudar de página pede a configuração. Como é que eu consigo controlar isso? É muito urgente pois já estou trabalhando nisto à duas semanas e não encontro solução!
Obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marisa, não dê UP em seu tópico sem motivo. Se ninguém pôde ajudá-la até agora, ou ninguém viu seu tópico devido à filtragem de tópicos por sala ou ninguém soube responder.

 

Bom, mexer com a FPDF é complicado, mas me parece que o problema é aquela condição no início do loop.

 

Primeiro de tudo você não deve definir sua ordenada (eixo y) de forma fix e muito menos se basear nela. Justamente por isso que a FPDF fornece o método FPDF::SetAutoPageBreak().

 

Através desse método você define se haverá (TRUE no primeiro argumento) ou não quebra de páginas e o quanto de margem haverá a partir do rodapé (segundo argumento).

 

Sendo assim, fora do loop você define através do seu objeto FPDF que haverá uma margem inferior de X centímetros (ou a unidade que você definiu no construtor) e dentro dele, você inicializa o valor da ordenada em 59, sem condicionar, afinal de contas, depois que a primeira iteração terminar, a segunda virá desde o começo e ao ler que a ordenada deve valer 59 ela vai valer 59 e ponto.

 

E no final do loop, quando todas as instruções já tiverem sido feitas, você define a última ação da rotina, que é justamente pular para a próxima página.

 

Aqui sim PODE vir a ser necessária uma condição para que não haja uma página em branco no final do documento, mas isso é você quem tem de ver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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