[RESOLVIDO]Uso do multicell está a dar dor-de-cabeça quebra de página

Saudações, pessoal!
Nolmalmente, eu tenho usado o método Cell no TCPDF. Mas, ele corta os dados caso estes sejam longos. Para solucionar esse problema, estou a usar o MultiCell, mas este método, quando tivermos muitos dados, ele não está a permitir a quebra de página. Estou a usar várias PageBreaks porque para cada select, preciso que abra nova página.
Ficaria muito feliz se me poderem ajudar.
Atenciosamente,
Belmiro Constantino


Acima, apresento a imagem do jeito que o sistema quebra a página…
E mais abaixo, apresento o código da blank:

////////////////////////////////////////////////////////////////////////////////
// AREA //////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// CONVOCATORIA //////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// ENDEREÇAMENTO DAS BIBLIOTECAS
///////////////////////////////////////////////////////////////////////////////////////////////

sc_include_lib(“tcpdf”);

sc_include_library(“prj”, “avaliacao”, “resultado_por_avaliador_dgat_dp_01.php”, true, true);
//sc_include_library(“prj”, “css”, “estilo.css”, true, true);

///////////////////////////////////////////////////////////////////////////////////////////////
// DEFINIÇÕES GERAIS DO RELATÓRIO
///////////////////////////////////////////////////////////////////////////////////////////////

// Criar um Novo Documento PDF
$pdf = new MYPDF(‘P’, PDF_UNIT, PDF_PAGE_FORMAT, true, ‘UTF-8’, false);

///////////////////////////////////////////////////////////////////////////////////////////////
// DEFINIÇÕES DA APARENCIA DO RELATÓRIO
///////////////////////////////////////////////////////////////////////////////////////////////

// Conjunto de Informações de Documentos
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor(‘BELMIRO CONSTANTINO’);
$pdf->SetTitle(‘AVALIAÇÃO DE COMPETÊNCIAS’);
$pdf->SetSubject(‘TCPDF Relatório Imagem’);
$pdf->SetKeywords(‘TCPDF, PDF, exemplo, PDFReport, Imagem’);
// Definições das Informações do Cabeçalho Padrão
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.’ 001’, PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
//$pdf->SetPrintFooter(false);
//$pdf->setFooterData(array(0,64,0), array(0,64,128));

// Definição das Fontes do Header e Footer
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, ‘’, PDF_FONT_SIZE_MAIN));
//$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, ‘’, PDF_FONT_SIZE_DATA));

// Definição das Fontes Monospaced
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// Definição das Margens ESQUERDA, DIREITA E BAIXO
$pdf->SetMargins(14, 28, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
//$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// Definição da Quebra de Pagina Automática
$pdf->SetAutoPageBreak(FALSE, PDF_MARGIN_BOTTOM);

// Definição da Escala de Imagem
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// Regua de Apoio com espaçamento da grade de 5mm
$pdf->grid = false;

// Definição da Fonte
$pdf->SetFont(‘Times’, ‘’, 11, ‘’, ‘false’);

// Adicionar Pagina
$pdf->AddPage(‘L’, ‘A4’);
//$pdf->SetY(15);

//$pdf->Ln(4);
//$pdf->Cell(82);
//$pdf->SetFillColor(0, 255, 0);
//$pdf->Ln(4);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(78, 5, ‘Competência - Compromisso Organizacional’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(90);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(100, 5, ‘Mapeia GAPs das competências’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Ln(6);
$pdf->SetTextColor(0,0,0);
$pdf->Cell(14, 5, ‘Depto’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(14, 5, ‘Mat.’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(82, 5, ‘Nome do avaliado’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
//$pdf->Cell(25, 5, ‘Cód. da função’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(104, 5, ‘Função’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(24, 5, ‘Desemp.(%)’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(30, 5, ‘Classificação’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Ln(4);

$sql ="SELECT depa,matricula_avaliado,nome_avaliado,funcao_avaliado,(na_compromisso/nr_compromisso)100 FROM direcao_geral_adjunta
WHERE Date(fim_avaliacao) =’[data_dois]’ AND depa LIKE ‘[DEPA]%’ AND na_compromisso<nr_compromisso ORDER BY matricula_avaliado
“;
sc_lookup(d,$sql);
if ({d}===false || empty({d}) ){
sc_error_message(“Alguns dados não foram inseridos…”);
}
$tamanho = sizeof({d});
for ($i=0;$i<$tamanho;++$i)
{
//$pdf->SetY(-10);
$areas = {d[$i][0]};
$mat_avaliador = {d[$i][1]};
$nome_avaliador = {d[$i][2]};
//$cod_func={d[$i][3]};
$funcao={d[$i][3]};
$cumprimentos={d[$i][4]};
$cumprimento=number_format($cumprimentos, 2, “,” , “.”);
$classificacao=”";
if($cumprimento>=1 && $cumprimento<80){
if($cumprimento>=60 && $cumprimento<80){
$classificacao=“BOM”;
}elseif($cumprimento>=40 && $cumprimento<60){
$classificacao=“SUFICIENTE”;
}elseif($cumprimento>=20 && $cumprimento<40){
$classificacao=“MAU”;
}elseif($cumprimento>=1 && $cumprimento<20){
$classificacao=“INACEITÁVEL”;
}
switch($classificacao){
case “EXCELENTE”:
sc_field_color($classificacao,"#32CD32");
break;
case “BOM”;
sc_field_color($classificacao,"#0000FF");
break;
case “SUFICIENTE”;
sc_field_color($classificacao,"#FFFF00");
break;
case “MAU”;
sc_field_color($classificacao,"#FFA500");
break;
case “INACEITÁVEL”;
sc_field_color($classificacao,"#FF0000");
break;
}
/
*
$pdf->Cell(14, 5, $areas, 1, false, ‘C’);
$pdf->Cell(14, 5, $mat_avaliador, 1, false, ‘C’);
$pdf->Cell(40, 5, $nome_avaliador, 1);
$pdf->Cell(30, 5, $cod_func, 1, false, ‘C’);
$pdf->Cell(70, 5, $funcao, 1);
$pdf->Cell(50, 5, $cumprimento, 1, false, ‘C’);
$pdf->Cell(50, 5, $classificacao, 1, false, ‘C’);
$pdf->Ln();
**/
}
//$pdf->Cell(14, 5, $areas, 1, false, ‘C’);
//$pdf->Cell(14, 5, $mat_avaliador, 1, ‘L’, ‘C’);
//$pdf->Cell(40, 5, $nome_avaliador, 1,‘R’);

			$pdf->MultiCell(14, 10,$areas, 1, 'L', 0, 0, '', '', true, 0, false, true, 40, 'T');
$pdf->MultiCell(14, 10,$mat_avaliador, 1, 'C', 0, 0, '', '', true, 0, false, true, 40, 'T');
			$pdf->MultiCell(82, 10,$nome_avaliador, 1, 'L', 0, 0, '', '', true, 0, false, true, 40, 'T');
//$pdf->MultiCell(25, 10,$cod_func, 1, 'C', 0, 0, '', '', true, 0, false, true, 40, 'T');
$pdf->MultiCell(104, 10,$funcao, 1, 'L', 0, 0, '', '', true, 0, false, true, 40, 'T');
			$pdf->MultiCell(24, 10,$cumprimento, 1, 'C', 0, 0, '', '', true, 0, false, true, 40, 'T');
$pdf->MultiCell(30, 10,'Abaixo do nível', 1, 'C', 0, 0, '', '', true, 0, false, true, 40, 'T');


			$pdf->Ln();

}

$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.’ 001’, PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
//$pdf->SetPrintFooter(false);
//$pdf->setFooterData(array(0,64,0), array(0,64,128));

// Definição das Fontes do Header e Footer
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, ‘’, PDF_FONT_SIZE_MAIN));
//$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, ‘’, PDF_FONT_SIZE_DATA));

// Definição das Fontes Monospaced
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// Definição das Margens ESQUERDA, DIREITA E BAIXO
$pdf->SetMargins(14, 28, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
//$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// Definição da Quebra de Pagina Automática
$pdf->SetAutoPageBreak(FALSE, PDF_MARGIN_BOTTOM);

// Definição da Escala de Imagem
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// Regua de Apoio com espaçamento da grade de 5mm
$pdf->grid = false;

// Definição da Fonte
$pdf->SetFont(‘Times’, ‘’, 11, ‘’, ‘false’);
//$pdf->SetY(-15);
$pdf->AddPage(‘L’, ‘A4’);

//$pdf->Ln(4);
//$pdf->Cell(82);
//$pdf->SetFillColor(0, 255, 0);
//$pdf->Ln(4);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(78, 5, ‘Competência - Excelência Operacional’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(90);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(100, 5, ‘Mapeia GAPs das competências’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Ln(6);
$pdf->SetTextColor(0,0,0);
$pdf->Cell(14, 5, ‘Depto’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(14, 5, ‘Mat.’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(82, 5, ‘Nome do avaliado’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
//$pdf->Cell(25, 5, ‘Cód. da função’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(104, 5, ‘Função’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(24, 5, ‘Desemp.(%)’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(30, 5, ‘Classificação’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Ln(4);

$sql ="SELECT depa,matricula_avaliado,nome_avaliado,funcao_avaliado,(na_excelencia/nr_excelencia)100 FROM direcao_geral_adjunta
WHERE Date(fim_avaliacao) =’[data_dois]’ AND depa LIKE ‘[DEPA]%’ AND na_excelencia<nr_excelencia ORDER BY matricula_avaliado
“;
sc_lookup(d,$sql);
if ({d}===false || empty({d}) ){
sc_error_message(“Alguns dados não foram inseridos…”);
}
$tamanho = sizeof({d});
for ($i=0;$i<$tamanho;++$i)
{
//$pdf->SetY(-10);
$areas = {d[$i][0]};
$mat_avaliador = {d[$i][1]};
$nome_avaliador = {d[$i][2]};
//$cod_func={d[$i][3]};
$funcao={d[$i][3]};
$cumprimentos={d[$i][4]};
$cumprimento=number_format($cumprimentos, 2, “,” , “.”);
$classificacao=”";
if($cumprimento>=1 && $cumprimento<80){
if($cumprimento>=60 && $cumprimento<80){
$classificacao=“BOM”;
}elseif($cumprimento>=40 && $cumprimento<60){
$classificacao=“SUFICIENTE”;
}elseif($cumprimento>=20 && $cumprimento<40){
$classificacao=“MAU”;
}elseif($cumprimento>=1 && $cumprimento<20){
$classificacao=“INACEITÁVEL”;
}
switch($classificacao){
case “EXCELENTE”:
sc_field_color($classificacao,"#32CD32");
break;
case “BOM”;
sc_field_color($classificacao,"#0000FF");
break;
case “SUFICIENTE”;
sc_field_color($classificacao,"#FFFF00");
break;
case “MAU”;
sc_field_color($classificacao,"#FFA500");
break;
case “INACEITÁVEL”;
sc_field_color($classificacao,"#FF0000");
break;
}
/
*
$pdf->Cell(14, 5, $areas, 1, false, ‘C’);
$pdf->Cell(14, 5, $mat_avaliador, 1, false, ‘C’);
$pdf->Cell(40, 5, $nome_avaliador, 1);
$pdf->Cell(30, 5, $cod_func, 1, false, ‘C’);
$pdf->Cell(70, 5, $funcao, 1);
$pdf->Cell(50, 5, $cumprimento, 1, false, ‘C’);
$pdf->Cell(50, 5, $classificacao, 1, false, ‘C’);
$pdf->Ln();
**/
}
$pdf->MultiCell(14, 10,$areas, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(14, 10,$mat_avaliador, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(82, 10,$nome_avaliador, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
//$pdf->MultiCell(25, 10,$cod_func, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(104, 10,$funcao, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(24, 10,$cumprimento, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(30, 10,‘Abaixo do nível’, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);

			$pdf->Ln();
			
}

//$pdf->AddPage(‘L’, ‘A4’);

$pdf->Ln(4);
//$pdf->Cell(82);
//$pdf->SetFillColor(0, 255, 0);
//$pdf->Ln(4);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(78, 5, ‘Competência - Trabalho em Equipa’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(90);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(100, 5, ‘Mapeia GAPs das competências’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Ln(6);
$pdf->SetTextColor(0,0,0);
$pdf->Cell(14, 5, ‘Depto’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(14, 5, ‘Mat.’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(82, 5, ‘Nome do avaliado’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
//$pdf->Cell(25, 5, ‘Cód. da função’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(104, 5, ‘Função’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(24, 5, ‘Desemp.(%)’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(30, 5, ‘Classificação’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Ln(4);

$sql ="SELECT depa,matricula_avaliado,nome_avaliado,funcao_avaliado,(na_trabalho/nr_trabalho)100 FROM direcao_geral_adjunta
WHERE Date(fim_avaliacao) =’[data_dois]’ AND depa LIKE ‘[DEPA]%’ AND na_trabalho<nr_trabalho ORDER BY matricula_avaliado
“;
sc_lookup(d,$sql);
if ({d}===false || empty({d}) ){
sc_error_message(“Alguns dados não foram inseridos…”);
}
$tamanho = sizeof({d});
for ($i=0;$i<$tamanho;++$i)
{
//$pdf->SetY(-10);
$areas = {d[$i][0]};
$mat_avaliador = {d[$i][1]};
$nome_avaliador = {d[$i][2]};
//$cod_func={d[$i][3]};
$funcao={d[$i][3]};
$cumprimentos={d[$i][4]};
$cumprimento=number_format($cumprimentos, 2, “,” , “.”);
$classificacao=”";
if($cumprimento>=1 && $cumprimento<80){
if($cumprimento>=60 && $cumprimento<80){
$classificacao=“BOM”;
}elseif($cumprimento>=40 && $cumprimento<60){
$classificacao=“SUFICIENTE”;
}elseif($cumprimento>=20 && $cumprimento<40){
$classificacao=“MAU”;
}elseif($cumprimento>=1 && $cumprimento<20){
$classificacao=“INACEITÁVEL”;
}
switch($classificacao){
case “EXCELENTE”:
sc_field_color($classificacao,"#32CD32");
break;
case “BOM”;
sc_field_color($classificacao,"#0000FF");
break;
case “SUFICIENTE”;
sc_field_color($classificacao,"#FFFF00");
break;
case “MAU”;
sc_field_color($classificacao,"#FFA500");
break;
case “INACEITÁVEL”;
sc_field_color($classificacao,"#FF0000");
break;
}
/
*
$pdf->Cell(14, 5, $areas, 1, false, ‘C’);
$pdf->Cell(14, 5, $mat_avaliador, 1, false, ‘C’);
$pdf->Cell(40, 5, $nome_avaliador, 1);
$pdf->Cell(30, 5, $cod_func, 1, false, ‘C’);
$pdf->Cell(70, 5, $funcao, 1);
$pdf->Cell(50, 5, $cumprimento, 1, false, ‘C’);
$pdf->Cell(50, 5, $classificacao, 1, false, ‘C’);
$pdf->Ln();
**/
}
$pdf->MultiCell(14, 10,$areas, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(14, 10,$mat_avaliador, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(82, 10,$nome_avaliador, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
//$pdf->MultiCell(25, 10,$cod_func, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(104, 10,$funcao, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(24, 10,$cumprimento, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(30, 10,‘Abaixo do nível’, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);

			$pdf->Ln();
}

//$pdf->AddPage(‘L’, ‘A4’);

$pdf->Ln(4);
//$pdf->Cell(82);
//$pdf->SetFillColor(0, 255, 0);
//$pdf->Ln(4);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(78, 5, ‘Competência - Higiene, Segurança e Meio Ambiente’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(90);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(100, 5, ‘Mapeia GAPs das competências’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Ln(6);
$pdf->SetTextColor(0,0,0);
$pdf->Cell(14, 5, ‘Depto’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(14, 5, ‘Mat.’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(82, 5, ‘Nome do avaliado’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
//$pdf->Cell(25, 5, ‘Cód. da função’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(104, 5, ‘Função’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(24, 5, ‘Desemp.(%)’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(30, 5, ‘Classificação’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Ln(4);

$sql ="SELECT depa,matricula_avaliado,nome_avaliado,funcao_avaliado,(na_higiene/nr_higiene)100 FROM direcao_geral_adjunta
WHERE Date(fim_avaliacao) =’[data_dois]’ AND depa LIKE ‘[DEPA]%’ AND na_higiene<nr_higiene ORDER BY matricula_avaliado
“;
sc_lookup(d,$sql);
if ({d}===false || empty({d}) ){
sc_error_message(“Alguns dados não foram inseridos…”);
}
$tamanho = sizeof({d});
for ($i=0;$i<$tamanho;++$i)
{
//$pdf->SetY(-10);
$areas = {d[$i][0]};
$mat_avaliador = {d[$i][1]};
$nome_avaliador = {d[$i][2]};
//$cod_func={d[$i][3]};
$funcao={d[$i][3]};
$cumprimentos={d[$i][4]};
$cumprimento=number_format($cumprimentos, 2, “,” , “.”);
$classificacao=”";
if($cumprimento>=1 && $cumprimento<80){
if($cumprimento>=60 && $cumprimento<80){
$classificacao=“BOM”;
}elseif($cumprimento>=40 && $cumprimento<60){
$classificacao=“SUFICIENTE”;
}elseif($cumprimento>=20 && $cumprimento<40){
$classificacao=“MAU”;
}elseif($cumprimento>=1 && $cumprimento<20){
$classificacao=“INACEITÁVEL”;
}
switch($classificacao){
case “EXCELENTE”:
sc_field_color($classificacao,"#32CD32");
break;
case “BOM”;
sc_field_color($classificacao,"#0000FF");
break;
case “SUFICIENTE”;
sc_field_color($classificacao,"#FFFF00");
break;
case “MAU”;
sc_field_color($classificacao,"#FFA500");
break;
case “INACEITÁVEL”;
sc_field_color($classificacao,"#FF0000");
break;
}
/
*
$pdf->Cell(14, 5, $areas, 1, false, ‘C’);
$pdf->Cell(14, 5, $mat_avaliador, 1, false, ‘C’);
$pdf->Cell(40, 5, $nome_avaliador, 1);
$pdf->Cell(30, 5, $cod_func, 1, false, ‘C’);
$pdf->Cell(70, 5, $funcao, 1);
$pdf->Cell(50, 5, $cumprimento, 1, false, ‘C’);
$pdf->Cell(50, 5, $classificacao, 1, false, ‘C’);
$pdf->Ln();
**/
}
if($cumprimento!=null){
$pdf->MultiCell(14, 10,$areas, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(14, 10,$mat_avaliador, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(82, 10,$nome_avaliador, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
//$pdf->MultiCell(25, 10,$cod_func, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(104, 10,$funcao, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(24, 10,$cumprimento, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(30, 10,‘Abaixo do nível’, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);

			$pdf->Ln();
		}
}

//$pdf->AddPage(‘L’, ‘A4’);

$pdf->Ln(4);
//$pdf->Cell(82);
//$pdf->SetFillColor(0, 255, 0);
//$pdf->Ln(4);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(78, 5, ‘Competência - Liderança e Gestão de Equipas’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(90);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(100, 5, ‘Mapeia GAPs das competências’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Ln(6);
$pdf->SetTextColor(0,0,0);
$pdf->Cell(14, 5, ‘Depto’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(14, 5, ‘Mat.’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(82, 5, ‘Nome do avaliado’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
//$pdf->Cell(25, 5, ‘Cód. da função’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(104, 5, ‘Função’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(24, 5, ‘Desemp.(%)’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(30, 5, ‘Classificação’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Ln(4);

$sql ="SELECT depa,matricula_avaliado,nome_avaliado,funcao_avaliado,(na_lideranca/nr_lideranca)100 FROM direcao_geral_adjunta
WHERE Date(fim_avaliacao) =’[data_dois]’ AND depa LIKE ‘[DEPA]%’ AND na_lideranca<nr_lideranca ORDER BY matricula_avaliado
“;
sc_lookup(d,$sql);
if ({d}===false || empty({d}) ){
sc_error_message(“Alguns dados não foram inseridos…”);
}
$tamanho = sizeof({d});
for ($i=0;$i<$tamanho;++$i)
{
//$pdf->SetY(-10);
$areas = {d[$i][0]};
$mat_avaliador = {d[$i][1]};
$nome_avaliador = {d[$i][2]};
//$cod_func={d[$i][3]};
$funcao={d[$i][3]};
$cumprimentos={d[$i][4]};
$cumprimento=number_format($cumprimentos, 2, “,” , “.”);
$classificacao=”";
if($cumprimento>=1 && $cumprimento<80){
if($cumprimento>=60 && $cumprimento<80){
$classificacao=“BOM”;
}elseif($cumprimento>=40 && $cumprimento<60){
$classificacao=“SUFICIENTE”;
}elseif($cumprimento>=20 && $cumprimento<40){
$classificacao=“MAU”;
}elseif($cumprimento>=1 && $cumprimento<20){
$classificacao=“INACEITÁVEL”;
}
switch($classificacao){
case “EXCELENTE”:
sc_field_color($classificacao,"#32CD32");
break;
case “BOM”;
sc_field_color($classificacao,"#0000FF");
break;
case “SUFICIENTE”;
sc_field_color($classificacao,"#FFFF00");
break;
case “MAU”;
sc_field_color($classificacao,"#FFA500");
break;
case “INACEITÁVEL”;
sc_field_color($classificacao,"#FF0000");
break;
}
/
*
$pdf->Cell(14, 5, $areas, 1, false, ‘C’);
$pdf->Cell(14, 5, $mat_avaliador, 1, false, ‘C’);
$pdf->Cell(40, 5, $nome_avaliador, 1);
$pdf->Cell(30, 5, $cod_func, 1, false, ‘C’);
$pdf->Cell(70, 5, $funcao, 1);
$pdf->Cell(50, 5, $cumprimento, 1, false, ‘C’);
$pdf->Cell(50, 5, $classificacao, 1, false, ‘C’);
$pdf->Ln();
**/
}
if($cumprimento!=null){
$pdf->MultiCell(14, 10,$areas, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(14, 10,$mat_avaliador, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(82, 10,$nome_avaliador, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
//$pdf->MultiCell(25, 10,$cod_func, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(104, 10,$funcao, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(24, 10,$cumprimento, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(30, 10,‘Abaixo do nível’, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);

			$pdf->Ln();
		}
}

$pdf->AddPage(‘L’, ‘A4’);

$pdf->Ln(4);
//$pdf->Cell(82);
//$pdf->SetFillColor(0, 255, 0);
//$pdf->Ln(4);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(78, 5, ‘Competência - Visão Estratégica’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(90);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(100, 5, ‘Mapeia GAPs das competências’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Ln(6);
$pdf->SetTextColor(0,0,0);
$pdf->Cell(14, 5, ‘Depto’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(14, 5, ‘Mat.’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(82, 5, ‘Nome do avaliado’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(25, 5, ‘Cód. da função’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(104, 5, ‘Função’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(24, 5, ‘Desemp.(%)’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(30, 5, ‘Classificação’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Ln(4);

$sql ="SELECT depa,matricula_avaliado,nome_avaliado,funcao_avaliado,(na_visao/nr_visao)100 FROM direcao_geral_adjunta
WHERE Date(fim_avaliacao) =’[data_dois]’ AND depa LIKE ‘[DEPA]%’ AND na_visao<nr_visao ORDER BY matricula_avaliado
“;
sc_lookup(d,$sql);
if ({d}===false || empty({d}) ){
sc_error_message(“Alguns dados não foram inseridos…”);
}
$tamanho = sizeof({d});
for ($i=0;$i<$tamanho;++$i)
{
//$pdf->SetY(-10);
$areas = {d[$i][0]};
$mat_avaliador = {d[$i][1]};
$nome_avaliador = {d[$i][2]};
//$cod_func={d[$i][3]};
$funcao={d[$i][3]};
$cumprimentos={d[$i][4]};
$cumprimento=number_format($cumprimentos, 2, “,” , “.”);
$classificacao=”";
if($cumprimento>=1 && $cumprimento<80){
if($cumprimento>=60 && $cumprimento<80){
$classificacao=“BOM”;
}elseif($cumprimento>=40 && $cumprimento<60){
$classificacao=“SUFICIENTE”;
}elseif($cumprimento>=20 && $cumprimento<40){
$classificacao=“MAU”;
}elseif($cumprimento>=1 && $cumprimento<20){
$classificacao=“INACEITÁVEL”;
}
switch($classificacao){
case “EXCELENTE”:
sc_field_color($classificacao,"#32CD32");
break;
case “BOM”;
sc_field_color($classificacao,"#0000FF");
break;
case “SUFICIENTE”;
sc_field_color($classificacao,"#FFFF00");
break;
case “MAU”;
sc_field_color($classificacao,"#FFA500");
break;
case “INACEITÁVEL”;
sc_field_color($classificacao,"#FF0000");
break;
}
/
*
$pdf->Cell(14, 5, $areas, 1, false, ‘C’);
$pdf->Cell(14, 5, $mat_avaliador, 1, false, ‘C’);
$pdf->Cell(40, 5, $nome_avaliador, 1);
$pdf->Cell(30, 5, $cod_func, 1, false, ‘C’);
$pdf->Cell(70, 5, $funcao, 1);
$pdf->Cell(50, 5, $cumprimento, 1, false, ‘C’);
$pdf->Cell(50, 5, $classificacao, 1, false, ‘C’);
$pdf->Ln();
**/
}
$pdf->MultiCell(14, 10,$areas, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(14, 10,$mat_avaliador, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(82, 10,$nome_avaliador, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
//$pdf->MultiCell(25, 10,$cod_func, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(104, 10,$funcao, 1, ‘L’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(24, 10,$cumprimento, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);
$pdf->MultiCell(30, 10,‘Abaixo do nível’, 1, ‘C’, 0, 0, ‘’, ‘’, true, 0, false, true, 40, ‘T’);

			$pdf->Ln();
}

/**
$pdf->AddPage(‘L’, ‘A4’);

$pdf->Ln(4);
//$pdf->Cell(82);
//$pdf->SetFillColor(0, 255, 0);
//$pdf->Ln(4);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(78, 5, ‘Objectivo - Indicador objetivo 1’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(90);
$pdf->SetTextColor(0,0,255);
$pdf->Cell(100, 5, ‘Mapeia GAPs das competências’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Ln(6);
$pdf->SetTextColor(0,0,0);
$pdf->Cell(14, 5, ‘Depto’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(14, 5, ‘Mat.’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(40, 5, ‘Nome do avaliado’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(30, 5, ‘Código da função’,1, false, ‘C’, 0, ‘’, 1, false, ‘M’, ‘M’);
$pdf->Cell(70, 5, ‘Função’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(50, 5, ‘% Cumprimento ponderado’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Cell(50, 5, ‘Classificação do resultado’,1, false, ‘C’, 0, ‘’, 0, false, ‘M’, ‘M’);
$pdf->Ln(4);

$sql =“SELECT depa,matricula_avaliado,nome_avaliado,codigo_da_funcao_avaliado,funcao_avaliado,(na_objetivo_um/nr_objetivo_um)*100 FROM avaliacao
WHERE Date(data_dois) =’[data_dois]’ ORDER BY matricula_avaliado
“;
sc_lookup(d,$sql);
if ({d}===false || empty({d}) ){
sc_error_message(“Alguns dados não foram inseridos…”);
}
$tamanho = sizeof({d});
for ($i=0;$i<$tamanho;++$i)
{
//$pdf->SetY(-10);
$areas = {d[$i][0]};
$mat_avaliador = {d[$i][1]};
$nome_avaliador = {d[$i][2]};
$cod_func={d[$i][3]};
$funcao={d[$i][4]};
$cumprimento={d[$i][5]};
$classificacao=””;
if($cumprimento>=1 && $cumprimento<80){
if($cumprimento>=60 && $cumprimento<80){
$classificacao=“BOM”;
}elseif($cumprimento>=40 && $cumprimento<60){
$classificacao=“SUFICIENTE”;
}elseif($cumprimento>=20 && $cumprimento<40){
$classificacao=“MAU”;
}elseif($cumprimento>=1 && $cumprimento<20){
$classificacao=“INACEITÁVEL”;
}
switch($classificacao){
case “EXCELENTE”:
sc_field_color($classificacao,"#32CD32");
break;
case “BOM”;
sc_field_color($classificacao,"#0000FF");
break;
case “SUFICIENTE”;
sc_field_color($classificacao,"#FFFF00");
break;
case “MAU”;
sc_field_color($classificacao,"#FFA500");
break;
case “INACEITÁVEL”;
sc_field_color($classificacao,"#FF0000");
break;
}

				$pdf->Cell(14, 5, $areas, 1, false, 'C');
			$pdf->Cell(14, 5, $mat_avaliador, 1, false, 'C');
			$pdf->Cell(40, 5, $nome_avaliador, 1);
			$pdf->Cell(30, 5, $cod_func, 1, false, 'C');
		    $pdf->Cell(70, 5, $funcao, 1);
			$pdf->Cell(50, 5, $cumprimento, 1, false, 'C');
			$pdf->Cell(50, 5, $classificacao, 1, false, 'C');
			$pdf->Ln();
		}
			
}

Eis a biblioteca externa:

<?php class MYPDF extends TCPDF { function Header() { // Logo do Relatório //'IMG', DIREITA, BAIXO, LARGURA, ALTURA $this->Image('../_lib/img/sys__NM__img__NM__LOGO.png', 14, 14, 54, 12); // Tipo de fonte $this->SetFont('helvetica', 'B', 12); // Titulo $this->SetTextColor(0,6,102); // Move to the right $this->Cell(328); $this->Cell(30,24,'RESULTADO DA AVALIAÇÃO POR AVALIADOR',0,0,'C'); //$this->SetY(5); //$this->Cell(130); //$this->Cell(0, 15, 'Sistema de avaliação de desempenho - SMC',0, 0, 'C', 0, '', 0, false, 'M', 'M'); $this->SetTextColor(0,6,102); $this->SetY(5); //$this->SetY(-15); $this->Ln(6); $this->Cell(0, 24, 'Sistema de avaliação de desempenho - SMC',0, 2, 'R', 0, '', 0, false, 'R', 'R'); } /////////////////////////////////////////////////////////////////////////////////////////////// // MONTAGEM DO CORPO DO RELATÓRIO /////////////////////////////////////////////////////////////////////////////////////////////// //Rodape public function Footer() { // Posicionado a 15mm do final da p�gina $this->SetY(-15); // Tipo de fonte $this->SetFont('helvetica', 'I', 8); // Numero da Pagina //$this->Cell(0, 10, 'Processo Nº $processo '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M'); $this->SetTextColor(0,6,102); $this->Cell(0, 6, '_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________', 0,1,'C',0, '', 0, false, 'T', 'C'); $this->Cell(0,6,'MOD.DGP.SPCH.001',0,0,'L'); //$this->Cell(0, 6, 'Processo nº $_POST["numero_processo"]'. echo $peguei, 0, 0, 'L', 0, '', 0, false, 'T', 'C'); $this->Cell(0); $this->Cell(1, 6, ''.$this->getAliasNumPage().' de '.$this->getAliasNbPages().' ', 0, 0, 'C', 0, '', 0, false, 'T', 'C'); } } ?>

https://dev.infinitusweb.net.br/scriptcase/reportpdf_dgrid_quebra_pagina

Eu simplesmente prevejo a quantidades de linhas que vai ser impressa, capturo a última altura impressa, se não houver espaço forço o salto de página.

Com segue o exemplo acima.

Estou em uma aplicação de reportpdf.

Fica meio inviável analisar seu código.

1 Curtida

Grande Haroldo, mas eu uso $pdf->grid = false;
Será que eu conseguiria ter o resultado esperado utilizando o reportpdf, Grande Mestre?

Grande Mestre, poderia postar aqui o método cabecalho e as variáveis $questao, $resposta, etc.?

mando por mensagem para você.
de um olhada na caixa de entrada.

@Belmiro,

Veja se é isso que precisava?

Inclui um filtro pois sua aplicação usa 2 globais de entrada;

Data para filtro: 10/07/2020
O Departamento pode escolher 1 ou todos.
Aproveitei e corrigi a coluna Classificação (acho que está como intenciona no seu código)
O Logo busquei na web, então você deve substituir a imagem na biblioteca externa pdf na pasta imagens.

Utilizei aplicação do tipo Report PDF e uma biblioteca externa chamada pdf que desenvolvi para montar datagrids, apoio ao TCPDF e o loading da página.

Veja o resultado:
https://dev.infinitusweb.net.br/scriptcase/gaps_por_competencia_depa_pdf
*Ofusquei a coluna nome do avaliado para não expor esses dados

O Controle para saber quantas linhas ocupa cada registro está no realce dessa imagem:

Aqui estão os parâmetros onde determino o número máximo de linhas impressas em cada página:


*Como não dá para prever se a linha de número 28 terá quebra na coluna nome do avaliado, então pode acontecer que imprima 29 linhas numa página, por isso deixei com 28 no máximo para obter uma linha a mais de segurança.

Os fontes estão em sua caixa de entrada aqui no forum.

Se notar, perceberá que uso o código bem estruturado para facilitar o entendimento e a manutenção n aplicação.

1 Curtida

Saudações, Grande Mestre!
Fez um óptimo trabalho. Mas, eu tenho três questões:
1ª Ao seleccionar todos os Depas, n seria melhor ordenar por depas?
2ª Não seria preferível que para pesquisa por um depa utilizássemos um campo de pesquisa do tipo auto-complete porque poderemos ter muitos departamentos?
3ª A margem direita não está muito larga, Mestre?

Agora, gostaria de saber se já me enviou os ficheiros, Grande Mestre?

Bom dia Belmiro.

Questão 1: Ordenar por Departamentos, eu usei exatamente os selects que estavam na sua aplicação original, mas você pode adicionar order by nos seus selects.Seus selects originais utilizam a matrícula na ordenação.

Questão 2: como a tabela que me enviaste tinham apenas 2 departamentos, achei melhor um campo select, campo autocomplete uso apenas quando o sql do campo resultam em muitos itens.

Questão 3: usei as margens que você aplica na sua aplicação original, para alterar basta mudar seu valor no evento onapplicationinit.

Veja bem, meu foco foi apresentar uma solução ao problema que postou inicialmente nesse tópico, que foi a questão do multicell e do salto de página. O fonte da aplicação assim como as bibliotecas estão na sua caixa de entrada. Você pode modificar a seu gosto.

1 Curtida

Grande Mestre, estava a testar pesquisar com datas não cadastradas e o sistema está a dar o seguinte erro:


Por outro lado, o campo de pesquisa por data não exibe o calendário.
Estou a tentar criar do zero seguindo o seu modelo, mas dá erro porque não consigo adicionar parâmetros ao escrever os nomes dos métodos, Mestre.

Saudações, Família Scriptcase!
Venho por este meio informar-lhes que este ticket está resolvido. Graças ao Grande Mestre @InfinitusWeb que teve muita paciência em passar a sua experiência. Solicitou-me alguns dados, passei-lhe por email, enviou-me o resultado perfeito. Criei mais um ReportPDF para ver se apanhei a lógica e funcionou perfeitante.
Portanto, que Deus abençoe todos aqueles que ajudam os menos experientes.

Só não sei a que se deva, mas quando pesquiso por dados que não existem no banco, a pesquisa gera erros. Gostaria de validar as pesquisa, Grande Mestre @InfinitusWeb.
Se a data passada na pesquisa não estiver no banco, enviar uma mensagem ao usuário. Caso contrário, exibe os dados. Actualmente falta essa validação.

Tem que incluir um If após sc_select para testar se houve erro na quero.
Se houver erro apresentar mensagem.

1 Curtida

1 Curtida

Funcionou perfeitamente, Grande Mestre. Mas, o calendário não aprece no campo de pesquisa pela data.

1 Curtida