Laudo no script case

Bom dia,

Gostaria de saber se consigo desenvolver um relatório que tenha a s seguintes características :

1 - Imprimir cabeçalho e rodapé com a pagina 1 de 2 , 1 de 3 , etc …

2 - Os itens devem ser inseridos na 2ª pagina , pois na primeira serão as informações do cliente, dados técnicos etc…

3 - Eu necessito colocar um filtro para imprimir com parâmetro ou sem.

4 - Necessito colocar na 3ª pagina os comentários do vendedor que é inserido no laudo

5 - Na 4ª pagina necessito colocar as considerações finais do engenheiro

É possível fazer isso com reportdef, fpdf , alguém teria uma ideia de como faço, pois sou novo em SC, e já consegui pelo menos o cabeçalho.

Também tenho alguns campos e parâmetros que serão realizados cálculos , onde sei que consigo faze-lo por meio de variável.

Att…
Fábio

É possível sim.

Com report pdf, mas o trabalho é manual.

Todos os 6 itens mais os cálculos é possível.

Requer conhecimento em php e fpdf, controle de quebra de página, passagem de parâmetros do filtro da própria aplicação.

HAROLDO ,

MINHA MAIOR DIFICULDADE, ESTÁ SENDO TRATAR ACENTUAÇÃO .

QUANDO UTILIZO O REPORTPDF , E COLOCO O CAMPO EM QUESTÃO SAI A ACENTUAÇÃO

QUANDO UTILIZO O FPDF E UTILIZO UTF8 VEM DA SEGUINTE FORMA ABAIXO :

SÃO PAULO fica S?O PAULO

CAFÉ FICA CAF?

Existe algo que eu possa fazer para resolver esta questão .

desde já agradeço sua ajuda e pronto atendimento
Att…
Fábio

Fábio,

Vc verificou como está o charset na aplicação ReportPdf?

Boa tarde,

Peço desculpas , mas sou novo e como faço para ver isso.

Como lhe disse no reportpdf sai corretamente , mas no fpdf, não.

Att…
Fábio

Fábio,

Veja alguns fragmentos de código que uso num blank. Vc pode colocar em métodos php :

$v_numero = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", $v_numero));
$v_cli_nome = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", $v_cli_nome));
$v_protocolo_autoriz = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", $v_protocolo_autoriz));

$corpo_1 = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'Quantidade Total de Ítens'));
$corpo_2 = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'Valor Total (ítens+acréscimos-desconto) R$'));
$corpo_3 = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'FORMA DE PAGAMENTO'));
$corpo_4 = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'Valor Pago'));
$corpo_5 = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'Dinheiro'));
$corpo_6 = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'Cheque'));
$corpo_7 = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'Crediário'));
$corpo_8 = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'Troco'));
$corpo_9 = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'Informação dos Tributos Totais Incidentes (Lei Federal 12.741 /2012)'));

//- Cabeçalho
	$pdf->SetFont('Arial','U',6);
	$cab_item = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'Ítem'));
	$cab_qtde = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'Qtde'));
	$cab_valor = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'Valor'));
	$pdf->SetX(1);			$pdf->Cell(0, 3, $cab_item, 0, 0, 'L', false); 
	$pdf->SetX(50);			$pdf->Cell(0, 3, $cab_qtde, 0, 0, 'L', false); 
	$pdf->SetX(67);			$pdf->Cell(12, 3, $cab_valor, 0, 0, 'R', false); 
	$pdf->Ln(3);

$pdf->Cell(0, 2, $v_linha,0,0,'C'); 			$pdf->Ln(2);

$pdf->Cell(0, 3, "CONSUMIDOR", 0, 0, 'C', false);			$pdf->Ln(3);
$pdf->Cell(0, 3, $v_cli_nome, 0, 0, 'C', false); 			$pdf->Ln(3);
$pdf->Cell(0, 3, $v_cli_cpf, 0, 0, 'C', false); 			$pdf->Ln(3);
//

Não pode esquecer de incluir a biblioteca:

[code]//------------------------------------------------------------------------------------
//
// Inclui Biblioteca
sc_include_lib (“fpdf”);
// Array com o tamanho do formulário
$_comprimento = 153+(2*$v_qtde_itens);
$tamanho = array(80,$_comprimento);

// Cria a página
$pdf=new FPDF();
$pdf->AddPage(‘P’,$tamanho);
[/code]

Jorge,

Muito obrigado pelo retorno e tentei usar o codigo que me enviou mas retorna o erro abaixo :

ERRO
iconv(): Detected an illegal character in input string
TCPDF ERROR: Some data has already been output, can’t send PDF file

O fonte que estou fazendo

//aqui eu inicio o fpdf
sc_include_lib(“fpdf”);
$pdf = new FPDF();
$pdf->SetAutoPageBreak(0);

//Função para limitar a quantidade de carater na celula do fdpf
function limitar($string, $tamanho, $encode = ‘UTF-8’) {
$string = mb_substr($string, 0, $tamanho, $encode);
return $string;
}//fim da função “limitar”

function removeracentos($str){
$from = ‘ÀÁÃÂÉÊÍÓÕÔÚÜÇàáãâéêíóõôúüç’;
$to = ‘AAAAEEIOOOUUCaaaaeeiooouuc’;
return strtr($str, $from, $to);
}

sc_lookup(meus_dados,“SELECT
Z8_LEGISLA,
Z8_NUMERO,
Z8_TIPO,
Z8_EMISSAO,
Z8_CHEGADA,
Z8_PREVSAI,
Z8_CLIENTE,
Z8_LOJA,
Z8_SITUACA,
Z8_TIPCALC,
Z8_VEND,
A3_NOME,
Z8_DTCOLET,
Z8_PONCOL1,
Z8_TECNICO,
Z8_TPAMOST,
Z8_ANALIST,
Z8_METODO1,
Z8_METODO2,
Z8_PROD1,
B1_DESC,
Z8_OBS01,
Z9_PARAMET,
Z9_ANALISE,
Z9_UM,
AH_UMRES,
Z9_ITEM,
Z9_MEDIC1,
Z9_DILUIC1,
Z9_RESULT1,
Z6_DESC,
A1_NOME,
A1_CGC ,
A1_END,
A1_MUN,
A1_BAIRRO,
A1_CEP,
A1_EST,
AA1_REGIAO,
AA1_REGIST,
ZZU_UMTEC,
ZZU_PARAM,
ZZU_SISTEM
FROM SZ8010 AS Z8, SZ9010 AS Z9, SZ6010 AS Z6, SA1010 AS A1, SA3010 AS A3,
AA1010 AS AA1, SAH010 AS AH,ZZU010 AS ZZU, SB1010 AS B1
WHERE Z8_CLIENTE=A1_COD
AND Z8_LOJA=A1_LOJA
AND Z8_LEGISLA=Z9_LEGISLA
AND Z8_NUMERO=Z9_NUMERO
AND Z9_ANALISE=Z6_CODIGO
AND Z8_VEND=A3_COD
AND Z8_TECNICO=AA1_CODTEC
AND AH_UNIMED=Z9_UM
AND Z8.D_E_L_E_T_ <> ‘
AND Z9.D_E_L_E_T_ <> '

AND Z6.D_E_L_E_T_ <> ‘
AND A1.D_E_L_E_T_ <> '

AND A3.D_E_L_E_T_ <> ‘
AND AH.D_E_L_E_T_ <> '

AND B1.D_E_L_E_T_ <> ‘
AND AA1.D_E_L_E_T_ <> '

AND ZZU.D_E_L_E_T_ <> ‘*’
AND Z9_ANALISE=ZZU_CODANL
AND Z8_PROD1=ZZU_CODPRO
AND B1_COD=Z8_PROD1
AND Z8_LEGISLA=’”.[legislacao]."’
AND Z8_NUMERO=’".[numero_laudo]."’
AND Z8_SITUACA IN (‘3’,‘4’)
AND Z8_VEND=’".[loginsa3]."’
ORDER BY Z8_LEGISLA, Z8_NUMERO, Z9_ANALISE
");
//aqui eu converto as datas para poder exibir no relatório
$_FiltroLegislacao = [legislacao];
$_FiltroLaudo = [numero_laudo];
//variável que me diz a quantidade de linhas a ser impressa
$linhasPpg = 45;
//variável que me diz quando deve ser impresso o cabeçalho e rodapé
$linhasCbl = 999;
//variável para exibir o número da página
$PageNo = 0;
//variável que pega o numero de registro que tenho no banco
$max_a = sizeof($meus_dados);
/aqui inicia o loop que vai imprimir todo o meu relatório/
for($i= 0; $i < $max_a;$i++)
{
/aqui onde eu pego os dados do lookup,
colocao em variáveis e limito o tamanho de caracteres
/
$_cLegislacao = limitar({meus_dados[$i][0]},22);
$_cLaudo = limitar({meus_dados[$i][1]},22);
$_cTipo = limitar({meus_dados[$i][2]},22);
$_dDataEmissao = sc_date_conv({meus_dados[$i][3]},“aaaa-mm-dd”,“dd/mm/aaaa”);
$_dDataChegada = sc_date_conv({meus_dados[$i][4]},“aaaa-mm-dd”,“dd/mm/aaaa”);
$_dDataPrevSaida = sc_date_conv({meus_dados[$i][5]},“aaaa-mm-dd”,“dd/mm/aaaa”);
$_cCodigoCliente = limitar({meus_dados[$i][6]},22);
$_cCodigoLoja = limitar({meus_dados[$i][7]},22);
$_cStatuslaudo = limitar({meus_dados[$i][8]},22);
$_cTipoCalc = limitar({meus_dados[$i][9]},22);
$_cCodigoVendedor = limitar({meus_dados[$i][10]},22);
$_cNomeVendedor = limitar({meus_dados[$i][11]},22);
$_dDataColeta = sc_date_conv({meus_dados[$i][12]},“aaaa-mm-dd”,“dd/mm/aaaa”);
$_cPontoColeta = limitar({meus_dados[$i][13]},22);
$_cTecnico = limitar({meus_dados[$i][14]},22);
$_cTipoAmostra = limitar({meus_dados[$i][15]},22);
$_cAnalista = limitar({meus_dados[$i][16]},22);
$_cMetodo1 = limitar({meus_dados[$i][17]},50);
$_cMetodo2 = limitar({meus_dados[$i][18]},50);
$_cCodigoProduto = limitar({meus_dados[$i][19]},22);
$_cNomeProduto = limitar({meus_dados[$i][20]},22);
$_cObservacao1 = limitar({meus_dados[$i][21]},1500);
$_cParametro = limitar({meus_dados[$i][22]},22);
$_cCodigoAnalise = limitar({meus_dados[$i][23]},22);
$_cUnidadeMedida = limitar({meus_dados[$i][24]},22);
$_cDescUnidadeMedida = limitar({meus_dados[$i][25]},22);
$_cCodigoItem = limitar({meus_dados[$i][26]},22);
$_cMedicao1 = limitar({meus_dados[$i][27]},22);
$_nDiluicao1 = number_format({meus_dados[$i][28]},4,’,’,’.’);
$_cResult1 = limitar({meus_dados[$i][29]},22);
$_cDescricaoAnalise = limitar({meus_dados[$i][30]},50);
$_cNomeCliente = limitar({meus_dados[$i][31]},80);
$_cCgcCliente = limitar({meus_dados[$i][32]},80);
$_cEnderecoCliente = limitar({meus_dados[$i][33]},80);
$_cMunicipioCliente = limitar({meus_dados[$i][34]},80);
$_cBairroCliente = limitar({meus_dados[$i][35]},80);
$_cCepCliente = limitar({meus_dados[$i][36]},80);
$_cUfCliente = limitar({meus_dados[$i][37]},80);
$_cRegiaoCliente = limitar({meus_dados[$i][38]},80);
$_cCodigoRegistro = limitar({meus_dados[$i][39]},22);
$_cDescParametro = limitar({meus_dados[$i][40]},22);
$_cParametro = limitar({meus_dados[$i][41]},22);
$_cSistema = limitar({meus_dados[$i][42]},22);

		//$myhr_rastreamento 		= limitar({meus_dados[$i][3]},17);
		//$myhr_data      		= sc_date_conv({meus_dados[$i][4]},"aaaa-mm-dd","dd/mm/aaaa");
		//$myhr_valor      		= number_format({meus_dados[$i][5]},2,',','.'); 
		//$myhr_observacao  		= limitar({meus_dados[$i][6]},29);
		
		/*aqui estou somando a variável, que vai me dizer 
			quando eu devo imprimir o cabeçalho e rodapé*/
			$linhasCbl = $linhasCbl + 1;
		
		/*------------------------- cabeçalho e rodapé----------------------------------*/
		/*------------------------- cabeçalho e rodapé----------------------------------*/
		
			/*condição para imprimir cabeçalho e rodapé,
			se a variável para imprimir cabeçalho for maior que 
			a variavel com a quantidade de linhas a imprimir,
			então imprima*/
			if ($linhasCbl > $linhasPpg) { 
				
					//aqui e pego o número da página, toda a vez que eu iimprimir o cabeçalho
					$PageNo = $PageNo + 1;
					
					//adiciono uma pagina para meu relatório
					$pdf->AddPage('P','A4');
					
					//carrego as imagens do meu relatório
					//$pdf->Image('../_lib/img/LGMID01.png', 8, 25, 280, 6);
					$pdf->Image('../_lib/img/LGMID01.png', 8, 5, 30, 30);
					
					//defino o título do cabeçalho
					$pdf->SetFont('Arial', '', 12);
					$pdf->SetXY(45,5);
					$habil = addslashes(iconv( "UTF-8", "ISO-8859-1//TRANSLIT", 'Hábil Industria e Cemércio Ltda'));			
					$pdf->Cell(100,15,$habil,0,1,'L');
					$pdf->Ln(2);
					
					//$texto = retira_acentos();
				
					$pdf->SetFont('Arial', '', 12);
					$pdf->SetXY(45,5);
					$pdf->Cell(100,25,utf8_decode('Avenida Sao Paulo,  atê 1875'),0,1,'L');					
					$pdf->Ln(12);
					//defino local para exibir das datas do intervalo pesquisado
					$pdf->SetFont('Arial','',10 );
					$pdf->SetX(20);
					$pdf->Cell(16,6,'Periodo: ',0,1,'L');
					$pdf->Cell(20,6,$_FiltroLegislacao,0,1,'L');
					$pdf->Cell(16,6,' ate ',0,1,'L');
					$pdf->Cell(20,6,$_FiltroLaudo ,0,1,'L');
					$pdf->Ln(2);
				/*--------------- imprimo o rodapé--------------------*/
				/*--------------- imprimo o rodapé--------------------*/
				$pdf->SetTextColor(0);
				$pdf->Setxy(100,285);
				$pdf->Cell(45,6,'Pagina '.$PageNo,0,0,'L');
				/*--------------- fim do rodapé -------------------*/
				/*--------------- fim do radapé -------------------*/
				
				/*-------- imprimo o cabeçalho da tabela -------*/
					
					$pdf->SetTextColor(0);
					$pdf->SetFont('Arial', 'B', 8);
					$pdf->Setxy(40,85);
				    $pdf->Cell(40,6,'CARACTERISTICAS',1,0,'C');
					$pdf->Cell(30,6,'UNIDADE MEDIDA',1,0,'C');
					$pdf->Cell(40,6,limitar({meus_dados[$i][42]},22),1,0,'C');
					$pdf->Cell(40,6,'PARAMETROS',1,0,'C');					
					$pdf->Ln(6);
					/*aqui eu zero a variável do cabeçalho para não iimprimir,
					enquanto não atingir a quantidade maxima de linhas por pagina*/				
					$linhasCbl = 0 ;
				
			}//aqui eu fecho o loop do cabeçalho e rodapé
		
		/*aqui eu imprimo as linhas da minha tabela*/			
		$pdf->SetTextColor(0);
		$pdf->SetFont('Arial', '', 9);
		$pdf->Setx(40);
		$pdf->Cell(40,6,limitar({meus_dados[$i][30]},30),1,0,'C');
		$pdf->Cell(30,6,limitar({meus_dados[$i][24]},22),1,0,'C');
		//$pdf->Cell(35,6,$myhr_rastreamento,1,0,'L');
		//$pdf->Cell(5,6,'R$','LTB',0,'L');
		//$pdf->Cell(20,6,$myhr_valor,'TRB',0,'R');
		//$pdf->Cell(55,6,$myhr_observacao,1,0,'L');
		$pdf->Cell(40,6,limitar({meus_dados[$i][27]},22),1,0,'C');
		$pdf->Cell(40,6,limitar({meus_dados[$i][41]},22),1,0,'C');
		$pdf->Ln(6);

}//aqui eu fecho a impressão do relatório

/*e por último, imprimo um resumo de quantos registos foram impressos, e
valor total das encomendas enviadas*/
//$pdf->SetFont('Arial', 'B', 11);
//$pdf->Cell(0,15,"",0,1);
//$pdf->SetX(8);
//$pdf->Cell(55,6,'Quantidade de Registro: ',0,0,'L');
//$pdf->Cell(20,6,$max_a,0,1,'L');
//$pdf->Cell(150,6,utf8_decode($_cObservacao1),0,1,'C');
//$pdf->Cell(0,5,"",0,1);
//$pdf->SetX(8);
//$pdf->Cell(25,6,'Valor Total: ',0,0,'L');
//$pdf->Cell(25,6,'R$'.$valor_total,0,0,'L');
//$pdf->Cell(22,6,$_cObservacao1,0,0,'C');
$pdf->SetXY(14, 232);
$pdf->Ln(0);
$pdf->SetLineWidth(0.1);
$pdf->SetFont('','',8);
$pdf->MultiCell(135, 3,utf8_decode($_cObservacao1), 0, 1);

$pdf->Output();

Comenta essa parte:

function removeracentos($str){
$from = ‘ÀÁÃÂÉÊÍÓÕÔÚÜÇàáãâéêíóõôúüç’;
$to = ‘AAAAEEIOOOUUCaaaaeeiooouuc’;
return strtr($str, $from, $to);
}

e testa pra ver!

Boa tarde,

FredKeyster,

Obrigado pelo retorno mas fiz o que você me solicitou e não resolveu.

ERRO
iconv(): Detected an illegal character in input string
TCPDF ERROR: Some data has already been output, can’t send PDF file

Blz

Bom dia,

Com o apoio do Jorge Popelnitski, consegui resolver a questão do acento , onde fiz o seguinte no codigo enviado pelo Jorge :

Neste caso eu tenho que inverter a ordem , onde meu banco é SQL SERVER, e o collete esta invertido em nossa base.

Herdei de colegas que configuraram o banco.

$pdf->SetXY(14, 232);
$pdf->Ln(0);
$pdf->SetLineWidth(0.1);
$pdf->SetFont('','',8);
$_cObservacao1 = addslashes(iconv("ISO-8859-1","UTF-8//TRANSLIT", $_cObservacao1));    
$pdf->MultiCell(135, 3,$_cObservacao1, 0, 1);

Aos demais colegas que me apoiaram , agradeço todos em para o colega Jorge , meu agradecimento pelo apoio.

Att…
Fábio carneiro dos santos

Fábio,

Como diz nosso colega Willian Fernando: “Ajudar ao próximo e a chave para um futuro melhor!”

Vamos nos ajudar.

[]s

Nice :slight_smile: