Ir para conteúdo
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

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