Jump to content
Weslley da Silva Rodrigues

LINHAS TABELA PDF PHP

Recommended Posts

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); 

Sem título.jpg

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.