Weslley da Silva Rodrigues 0 Denunciar post Postado Julho 26, 2019 Pessoal boa noite. Sou novo nessa área de Programação e preciso de uma ajuda Estou tentando desenhar a linha de cima no meu relatório pdf no PHP, mas não estou conseguindo. Alguém pode me ajudar? O relatório que eu gero está. Como podem ver a linha de cima da minha tabela não aparece. Segue o código: / Comentar as linhas de consulta SQL apenas para testar o formato do relatório //------DADOS A RECEBER PARA GERAR RELATÒRIOS: extract($_POST,EXTR_SKIP); extract($_GET,EXTR_SKIP); //import_request_variables("gP"); $enderecoLogo=$Caminho_Imagem; //logo da empresa cliente que emite o certificado $ExpreSQL; // recebe a expressão SQL que traduz a consulta desejada a tabela $ConfigPRINT; //recebe as configurações para impressão: se retrato ou paisagem, se A4 ou Letter, etc $TipoUnidadeOrig = "Engenharia Clínica/Manutenção Biomédica"; //Dados de conexão { # Dados para a conexão com o banco de dados $data=date("d/m/Y"); $dataAME=date("Y-m-d"); //data no formato AMERICANO $time=date("G:H:s"); # Executa a conexão com o MySQL $link = mysqli_connect ($servidor, $usuario, $senha, $banco) or die("Falha ao conectar: o erro foi" .mysqli_error()); mysqli_set_charset($link, 'utf8'); #Seleciona o banco de dados que deseja utilizar $select=mysqli_select_db($link, $banco); //confere se o serviço foi contratado if($num_serv_cont!="") { $sql = "SELECT * FROM servicoscontratados WHERE CNPJ = '$CNPJ'"; $result = mysqli_query($link, $sql); while ($tbl = mysqli_fetch_array($result)) { $CNPJ1 =$tbl["CNPJ"]; $ListaServico=$tbl["CODESERVICO"]; $TotalEquip=$tbl["ItensParque"]; $Planilha=$tbl["Planilha"]; $StatusCadastro=$tbl["StatusCadastro"]; //pega os dados da instituição para montar o cabeçalho do relatório $RazaoSocial=$tbl["RazaoSocial"]; $Endereco=$tbl["Endereco"]; $Cidade=$tbl["Cidade"]; $Estado=$tbl["Estado"]; $LogoMarca=$tbl["LogoMarca"]; }//busca dados para confirmar que o serviço foi contratado $VetorListaServico=explode("-",$ListaServico); foreach ($VetorListaServico as $v){ if($v=="$num_serv_cont"){ $editaCampoArquivo = "sim"; } } } else {$editaCampoArquivo="sim";} //confirma que tem contrato de gerenciamento otimizado ativo //pesquisa os dados do cliente $sql = "SELECT * FROM Clientes WHERE CNPJ = '$CNPJ'"; $result = mysqli_query($link, $sql); while ($tbl = mysqli_fetch_array($result)) { $CNPJ1 =$tbl["CNPJ"]; //pega os dados da instituição para montar o cabeçalho do relatório $RazaoSocial=$tbl["RazaoSocial"]; $Fantasia=$tbl["NomeCliente"]; $Endereco=$tbl["Endereco"]; $Cidade=$tbl["Cidade"]; $Estado=$tbl["Estado"]; $LogoMarca=$tbl["LogoMarca"]; }//busca dados do cliente //Função de subtração de datas! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //retorna o número de dias function dateDiff($sDataInicial, $sDataFinal){ // explode os dados, sendo 0=dia, 1=mês, 2=ano para o formato dd/mm/aaaa // mktime é (hora, minuto, segundo, mês, dia, ano) $sDataI = explode("/", $sDataInicial); //trocar os marcadores e a ordem das datas $sDataF = explode("/", $sDataFinal); //trocar os marcadores e a ordem das datas $nDataInicial = mktime(0, 0, 0, $sDataI[1] , $sDataI[0], $sDataI[2] ); $nDataFinal = mktime(0, 0, 0, $sDataF[1], $sDataF[0], $sDataF[2]); return ($nDataInicial > $nDataFinal) ? floor(($nDataInicial - $nDataFinal)/84600) : floor(($nDataFinal - $nDataInicial)/84600); } function arredondar_dois_decimal($valor) { $float_arredondar=round($valor * 100) / 100; return $float_arredondado; } function limita_caracteres($texto, $limite, $quebra = true){ $texto=trim($texto); $texto="$texto"; $tamanho = strlen($texto); $tamanho=1.45*$tamanho; //multiplica a correlação entre o tamanho da letra e o tamanho da célula if($tamanho < $limite){ //Verifica se o tamanho do texto é menor ou igual ao limite $novo_texto = "$texto"; }else{ // Se o tamanho do texto for maior que o limite $limite=ceil($limite/1.45); //faz a correlação com o tamanho da letra $limite=$limite-4; if($quebra == true){ // Verifica a opção de quebrar o texto $novo_texto = trim(substr($texto, 0, $limite))."..."; }else{ // Se não, corta $texto na última palavra antes do limite $ultimo_espaco = strrpos(substr($texto, 0, $limite), " "); // Localiza o útlimo espaço antes de $limite $novo_texto = trim(substr($texto, 0, $ultimo_espaco))."..."; // Corta o $texto até a posição localizada } } return $novo_texto; // Retorna o valor formatado } function fixEncoding($in_str) { $cur_encoding = mb_detect_encoding($in_str) ; if($cur_encoding == "UTF-8" && mb_check_encoding($in_str,"UTF-8")) { return utf8_decode($in_str); } elseif($cur_encoding == "ISO 8859-1" && mb_check_encoding($in_str,"ISO 8859-1")) { return $in_str; } else { // Não testado: return iconv($cur_encoding, "ISO 8859-1", $in_str); //throw new Exception('Codificação não suportada.'); //comentado este } } $RazaoSocial=fixEncoding($RazaoSocial); $Fantasia=fixEncoding($Fantasia); $Endereco=fixEncoding($Endereco); $Cidade=fixEncoding($Cidade); $Estado=fixEncoding($Estado); $LogoMarca=fixEncoding($LogoMarca); } //------------------------------------------ $dataR=date("d-m-Y"); require('rotation.php'); require_once('fpdf/fpdf.php'); //Definição dos cabeçalhos do relatório class PDF extends PDF_Rotate { // Page header function Header() { global $Titulo; global $Fantasia; global $RazaoSocial; global $Endereco; global $Cidade; global $Estado; global $LogoMarca; global $CNPJ1; global $enderecoLogo; global $FiltroEQP; global $FiltroMAR; global $FiltroMOD; global $FiltroUND; global $AnoAtual; /* if($enderecoLogo!=""){ //figuras/MMlogo.JPG $this->Image($enderecoLogo,6,6,28,20); //exibe a imagem sendo as duas primeiras coordenadas as do canto superior esquerdo e a �ltima a largura da figura. A propor��o da figura � sempre mantida } // Arial bold 15 $this->SetFont('Arial','B',13); //move para a direita $this->Cell(73); // Title $this->Cell(20,10,utf8_decode($Titulo),0,0,'C'); //trocando titulo //fonte para o cliente $this->SetFont('Courier','B',8); //move para a direita $this->Cell(33); // dados do cliente $textoMC="$RazaoSocial \n $Fantasia \n CNPJ: $CNPJ1 \n Endereço: $Endereco \n $Cidade"; $this->MultiCell(65,3,$textoMC,'C',0); */ if($enderecoLogo!=""){ //figuras/MMlogo.JPG $this->Image($enderecoLogo,10,6,30,20); //exibe a imagem sendo as duas primeiras coordenadas as do canto superior esquerdo e a �ltima a largura da figura. A propor��o da figura � sempre mantida } // Arial bold 15 $this->SetFont('Arial','B',13); // Move to the right $this->Cell(70); //80 // Title $this->Cell(20,10,utf8_decode($Titulo),0,0,'C'); //trocando titulo //fonte para o cliente $this->SetFont('Courier','B',8); //move para a direita $this->Cell(25); // dados do cliente $textoMC="$RazaoSocial \n $Fantasia \n CNPJ: $CNPJ1 \n Endereço: $Endereco \n $Cidade"; $this->MultiCell(80,3,$textoMC,'C',0); //Filtros if($FiltroEQP!="" || $FiltroMAR!="" || $FiltroMOD!="" || $FiltroUND!=""){ $FiltroEQP1=utf8_decode($FiltroEQP); $FiltroMAR1=utf8_decode($FiltroMAR); $FiltroMOD1=utf8_decode($FiltroMOD); $FiltroUND1=utf8_decode($FiltroUND); $filtros= "Filtrado por Eq.:[$FiltroEQP1] Marca:[$FiltroMAR1] Modelo:[$FiltroMOD1] Unidade:[$FiltroUND1] Ano:[$AnoAtual]"; //$this->SetFont('Courier','B',8); //$this->Cell(50); $this->MultiCell(0,1,$filtros,'L','C' ); //0,0,'L' } // Line break $this->Ln(20); //ajusta largura de uma linha horizontal $this->SetLineWidth(0.5); //coloca linha horizontal $this->Line(10,27,200,27); //inserir marca d'agua $this->RotatedImage('aclin_marcadagua.jpg',60,90,100,100,0); } // Page footer function Footer() { global $dataR; // Position at 1.5 cm from bottom $this->SetY(-15); // Logo $this->Image('figuras/MMlogo.JPG',15,280,20);//exibe a imagem sendo as duas primeiras coordenadas as do canto superior esquerdo e a última a largura da figura. A proporção da figura é sempre mantida // Arial italic 8 $this->SetFont('Arial','I',8); // indicação da Aclin $this->Cell(0,10,'www.aclin.com.br', 0,0,'C'); // Page number $this->Cell(0,0,'Page '.$this->PageNo().'/{nb}',0,0,'R'); // indicação de data $this->Cell(0,10,$dataR, 0,0,'C'); } //funcoes definidas em rotation.php para inserir marca dágua function RotatedText($x, $y, $txt, $angle)//insere marca dágua em forma de texto { //Text rotated around its origin $this->Rotate($angle,$x,$y); $this->Text($x,$y,$txt); $this->Rotate(0); } function RotatedImage($file,$x,$y,$w,$h,$angle)//insere marca dágua em forma de imagem { //Image rotated around its upper-left corner $this->Rotate($angle,$x,$y); $this->Image($file,$x,$y,$w,$h); $this->Rotate(0); } //Funções para as tabelas geradas a partir das consultas feitas neste código // Simple table -- cria o cabeçalho function BasicTableCAB($header, $w) { // Header $this->SetFont('Arial','B',8); for($i=0;$i<count($header);$i++) $this->Cell($w[$i],7,$header[$i],1,0,'C'); $this->Ln(); } // Simple table -- cria as Células function BasicTableCEL($Texto, $w) { // Header $TextoFinal=explode("**", $Texto); $this->SetFont('Arial','I',8); for($i=0;$i<count($TextoFinal);$i++){ //usa a funcao de limitacao do texto $TextoFinal[$i]=limita_caracteres($TextoFinal[$i],$w[$i]) ; $this->Cell($w[$i],6,$TextoFinal[$i],'LR',0,'C'); } $this->Ln(); } //função para fechar tabelas e traçar linhas no tamanho da tabela function FechaTabela($w){ // Closing line para tabelas $this->Cell(array_sum($w),0,'','T'); $this->Ln(5); } //funções de modelo para gerar tabelas a partir de documentos tipo texto // Load data -- importa dados de um arquivo txt e gera um vetor chamado $dataT function LoadData($file) { // Read file lines $lines = file($file); $dataT = array(); foreach($lines as $line) $dataT[] = explode(';',trim($line)); return $dataT; } // Simple table -- cria uma tabela simples function BasicTable($header, $dataT) { // Header foreach($header as $col) $this->Cell(40,7,$col,1); $this->Ln(); // Data foreach($dataT as $row) { foreach($row as $col) $this->Cell(40,6,$col,1); $this->Ln(); } } // Better table -- cria uma tabela um pouco melhor function ImprovedTable($header, $dataT) { // Column widths $w = array(40, 35, 40, 45); // Header for($i=0;$i<count($header);$i++) $this->Cell($w[$i],7,$header[$i],1,0,'C'); $this->Ln(); // Data foreach($dataT as $row) { $this->Cell($w[0],6,$row[0],'LR'); $this->Cell($w[1],6,$row[1],'LR'); $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R'); $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R'); $this->Ln(); } // Closing line $this->Cell(array_sum($w),0,'','T'); } // Colored table -- cria uma tabela coloria function FancyTable($header, $dataT) { // Colors, line width and bold font $this->SetFillColor(255,0,0); $this->SetTextColor(255); $this->SetDrawColor(128,0,0); $this->SetLineWidth(.3); $this->SetFont('','B'); // Header $w = array(40, 35, 40, 45); for($i=0;$i<count($header);$i++) $this->Cell($w[$i],7,$header[$i],1,0,'C',true); $this->Ln(); // Color and font restoration $this->SetFillColor(224,235,255); $this->SetTextColor(0); $this->SetFont(''); // Data $fill = false; foreach($dataT as $row) { $this->Cell($w[0],6,$row[0],'LR',0,'L',$fill); $this->Cell($w[1],6,$row[1],'LR',0,'L',$fill); $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R',$fill); $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R',$fill); $this->Ln(); $fill = !$fill; } // Closing line $this->Cell(array_sum($w),0,'','T'); } } // Instanciation of inherited class $pdf = new PDF('P', 'mm', 'A4'); $pdf->AliasNbPages(); $pdf->AddPage(); $pdf->SetFont('Times','',12); // cria a linha de colunas das tabelas: $header = array('TAG(DEC)', 'Marca', 'Modelo', 'N.Serie', 'N.Patrimônio', 'Cadastrado em:', 'Idade (anos)', 'Vida útil' ); // Column widths - tamanhos das colunas $w = array(25, 40, 30, 30, 30, 25, 30, 30); /* Relatório */ //tabela de inventário do cliente $TAB = "Z_".$CNPJ."_INV"; $vaz=""; $desativado = "Desativado"; //seleciona todas as unidades $query = "SELECT Unidade FROM $TAB GROUP BY Unidade "; $result = mysqli_query($link, $query); // cabeçalho das tabelas: $header = array('Equipamento', 'Quantidade'); // tamanho das colunas $w = array(80, 40); //armazena todas as inidades no vetor Unidade while ($row = mysqli_fetch_array($result)) { $Unidade [] = $row['Unidade']; } //executa para cada unidade do hospital //foreach($Unidade as $val) { //$pdf->SetFont('Arial','B',15); //$pdf->Cell(35,10,utf8_decode($val),0,1,'L'); //pdf->Cell(15); //$pdf->BasicTableCAB($header, $w); //conexão com o BD, numero de tipo equipamentos por unidade $query = "SELECT Equipamento, count(*) FROM $TAB WHERE (Situacao!='$desativado' OR Situacao='$vaz') GROUP BY Equipamento"; if($FiltroEQP!=""){ $query = "SELECT Equipamento, count(*) FROM $TAB WHERE Equipamento='$FiltroEQP' AND (Situacao!='$desativado' OR Situacao='$vaz') ORDER BY Equipamento"; //filtrando if($FiltroEQP!="" || $FiltroMAR!="" || $FiltroMOD!="" || $FiltroUND!=""){ $addvirg = "no"; $query.= " AND ("; //abre o where if($FiltroEQP!=""){ if($addvirg == "yes"){ $query.=" AND "; //adiciona virgula caso o filtro anterior tenha sido aplicado } $query.="Equipamento='$FiltroEQP'"; $addvirg = "yes"; } if($FiltroMAR!=""){ if($addvirg == "yes"){ $query.=" AND "; //adiciona virgula caso o filtro anterior tenha sido aplicado } $query.="Marca='$FiltroMAR'"; $addvirg = "yes"; } if($FiltroMOD!=""){ if($addvirg == "yes"){ $query.=" AND "; //adiciona virgula caso o filtro anterior tenha sido aplicado } $query.="Modelo='$FiltroMOD'"; $addvirg = "yes"; } if($FiltroUND!=""){ if($addvirg == "yes"){ $query.=" AND "; //adiciona virgula caso o filtro anterior tenha sido aplicado } $query.="Unidade='$FiltroUND'"; $addvirg = "yes"; } $query.=" )"; //exclui os equipamentos desativados } } $result = @mysqli_query($link, $query); while ($tbl = mysqli_fetch_array($result)) { $CODE=$tbl["CODE"]; $Estrutura=$tbl["Estrutura"]; $Equipamento=$tbl["Equipamento"]; if($Estrutura!=""){ $Equipamento=$Estrutura; } $quantEquip = $tbl['count(*)']; $TAG=$tbl["TAG"]; $NumSerie=$tbl["NumSerie"]; $NumPatrimonio=$tbl["NumPatrimonio"]; $Marca=$tbl["Marca"]; $Modelo=$tbl["Modelo"]; $Criacao=$tbl["Criacao"]; $Unidade=$tbl["Unidade"]; $DataCadastro=$tbl["Data_cadastro"]; $DataAgenda=$tbl["DataAgenda"]; $DetalheEXE=$tbl["DetalheEXE"]; $TempInicial=$tbl["TempInicial"]; $TempFinal=$tbl["TempFinal"]; $Observacao=$tbl["Observacao"]; //$DetalheEXE=$tbl["DetalheEXE"]; //dados para manutenção predial $Local=$tbl["Localizacao"]; $Texto = " $Equipamento ** $quantEquip"; //centralizar tabela $pdf->Cell(15); //Cria celula com o vetor $texto $pdf->BasicTableCEL(utf8_decode($Texto), $w); } if($habilitaLinha="sim"){ $pdf->Cell(15); $pdf->FechaTabela($w); // Line break $pdf->Ln(5); } //} //faz a saída do documento $pdf->Output("Relatório Quantidade por Equipamento.pdf", "I"); //Finaliza a conexão com o BD mysqli_close($link); Compartilhar este post Link para o post Compartilhar em outros sites