LINHAS TABELA PDF PHP
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);

Discussão (0)
Carregando comentários...