Autor Tópico: FPDF error: Some data has already been output, can't send PDF file  (Lida 1135 vezes)

Lipinski

  • Novato
  • *
  • Mensagens: 7
    • Email
FPDF error: Some data has already been output, can't send PDF file
« Online: Janeiro 12, 2015, 09:42:34 am »
SC 7.01.0021
Banco Sql 2008 R2

Esse aplicação ira  gerar um relatorio em PDF das empresas selecionadas com aproximadamente 150 paginas.
Abre-se um grid onde o usuario ira selecionar as empresas que quer imprimir e num botão RUN executara a rotina

Criei uma classe ( na opção biblioteca) com base em uma que eu encontrei no site http://www.fpdf.org (Multi-columns) e adaptei para o que eu queria.
Em um Blank eu chamo a classe.


Se eu colocar o sc_select apresenta o erro acima.
Obs.:
1. Basta simplesmente colocar o comando.
2. Antes eu estava usando sc_select() sem problema, depois que eu coloquei
.
.
.
sc_select(Socios,$SqlSocio);

while (!$Socios->EOF)
      {   
.
.
.
passou a dar a mensagem.
depois disso só funciona se retirar todos os
sc_select


$pdf = new PDF();

$Sql="SELECT
         Contratos.Codigo_do_contrato,
         Contratos.Nome,
         Contratos.Cnpj,
         Cidade.Nome AS NomeCidade,
         Contratos.Bairro,
           Contratos.Endereco,
         Contratos.CEP
      FROM         
         Contratos INNER JOIN
            Cidade ON
            Contratos.Id_cidade = Cidade.Id_cidade
      WHERE     
         (Contratos.Codigo_do_contrato = 1)";

sc_select(meus_dados,$Sql);

$CodigoPessoaJuridica   =       $meus_dados->fields[0];
$PessoaJuridica         =       $meus_dados->fields[1];
$CNPJ               =       $meus_dados->fields[2];
$NomeCidade            =       $meus_dados->fields[3];
$Bairro               =       $meus_dados->fields[4];
$Endereco            =       $meus_dados->fields[5];
$CEP               =       $meus_dados->fields[6];

$Documentos = "SELECT     
               Id_documento,
               Descricao,
               Texto_padrao
            FROM         
               Documentos_pradroes";


sc_select(TextoPadrao,$Documentos);

$RECIBO = $TextoPadrao->fields[2];
$TextoPadrao->MoveNext();
$DECLARACAO_SOCIO = $TextoPadrao->fields[2];
$TextoPadrao->MoveNext();
$DECLARACAO_EMPRESA = $TextoPadrao->fields[2];


//DeclaraçãoIsençao INSS
$SqlSocio = "SELECT     
            PHPValorGuia.NomeProfissional,
            Profissional.Cpf,
            Profissional.Numero_rg,
            PHPValorGuia.Numerocontrato
         FROM         
            PHPValorGuia INNER JOIN
                Profissional ON
               PHPValorGuia.CodigoProfissional = Profissional.Codigo_do_profissional
         WHERE
            (PHPValorGuia.CodigoPessoaJuridica = " .$CodigoPessoaJuridica. ")
         GROUP BY
            PHPValorGuia.NomeProfissional,
            Profissional.Cpf,
            Profissional.Numero_rg,
            PHPValorGuia.Numerocontrato";

sc_select(Socios,$SqlSocio);

while (!$Socios->EOF)
      {   
         $Imprime_Declaracao = $DECLARACAO_SOCIO ;
         //SOCIO         
         $Imprime_Declaracao = str_replace('@NomeSocio',$Socios->fields[0],$Imprime_Declaracao);
         //RG SOCIO
         $Imprime_Declaracao = str_replace('@NumeroRG',$Socios->fields[2],$Imprime_Declaracao);
         //Cpf Socio
         $Imprime_Declaracao = str_replace('@NumeroCPF',$Socios->fields[1],$Imprime_Declaracao);
         //Socio
         $Imprime_Declaracao = str_replace('@NomeEmpresa',$PessoaJuridica   ,$Imprime_Declaracao);
         //CNPJ EMPRESA
         $Imprime_Declaracao = str_replace('@CNPJContratada',$CNPJ,$Imprime_Declaracao);
         //Numero do contrato
         $Imprime_Declaracao = str_replace('@NumeroContrato',$Socios->fields[3],$Imprime_Declaracao);
         //Qual Instituto         
         $Imprime_Declaracao = str_replace('@NomeContratante',[vgDescricao_empresa],$Imprime_Declaracao);
         //@CNPJContratante

         $pdf->PrintChapter(1,   $CodigoPessoaJuridica,
                           $PessoaJuridica,
                              $CNPJ,
                              $NomeCidade,
                              $Bairro,
                              $Endereco,
                              $CEP,
                              'DECLARAÇÃO',
                              $Imprime_Declaracao);
   
         $Socios->MoveNext();
}

$pdf->Output();

//Class

<?php
require_once($this->Ini->path_third."/fpdf/fpdf.php");
class PDF extends FPDF
{
function Header()
{
    $title='-';

    // Arial bold 15
    $this->SetFont('Arial','B',15);
    // Calculate width of title and position
    $w = $this->GetStringWidth($title)+6;
    $this->SetX((210-$w)/2);
    // Colors of frame, background and text
    $this->SetDrawColor(0,80,180);
    $this->SetFillColor(230,230,0);
    $this->SetTextColor(220,50,50);
    // Thickness of frame (1 mm)
    $this->SetLineWidth(1);
    // Title
    $this->Cell($w,9,$title,1,1,'C',true);
    // Line break
    $this->Ln(10);
}
function ChapterTitle($lblNum, $lblCodigoPessoaJuridica,
                     $lblPessoaJuridica,
                        $lblCNPJ,
                        $lblNomeCidade,
                        $lblBairro,
                        $lblEndereco,
                        $lblCEP)
{
 
   $this->SetFont('Arial','B',15);
   $w = $this->GetStringWidth($lblPessoaJuridica)+6;    // Calculate width of title and position
    $this->SetX((210-$w)/2);
   $this->SetFillColor(200,220,255);
    $this->Cell($w,9,$lblPessoaJuridica,0,1,'C',true);   // Title
   
   $Texto = $lblNomeCidade .' - ' . $lblBairro .' - ' . $lblEndereco;
   
   $w = $this->GetStringWidth($Texto)+6;
   $this->SetX((210-$w)/2);
   $this->SetFillColor(200,220,255);
   $this->Cell($w,9,$Texto,0,1,'C',true);
   
   $Texto = 'CNPJ.: ' . $lblCNPJ .' - C.E.P.:' . $lblCEP;
   
   $w = $this->GetStringWidth($Texto)+6;
   $this->SetX((210-$w)/2);
   $this->SetFillColor(200,220,255);   
   $this->Cell($w,9,$Texto,0,1,'C',true);

   // Arial 12
    $this->SetFont('Arial','',12);
    // Background color
    $this->SetFillColor(200,220,255);
   
   // Title
   $this->Cell(0,0," ",1,1,'L',true);
    $this->SetFont('Arial','B',12);
   // Line break
    $this->Ln(20);
}

function ChapterBody($lblTitulo, $txt)
{
    // Read text file
    //$txt = $file;
    $this->SetFont('Times','',14);
   $this->Cell(0,9,$lblTitulo,1,1,'C',true);
   $this->Ln(20);
   // Times 12
    $this->SetFont('Times','',12);
    // Output justified text
    $this->MultiCell(0,5,$txt);
    // Line break
    $this->Ln();
    // Mention in italics
    $this->SetFont('','I');
    $this->Cell(0,5,'(end of excerpt)');
}

   
function PrintChapter($num,$CodigoPessoaJuridica,
                     $PessoaJuridica,
                        $CNPJ,
                        $NomeCidade,
                        $Bairro,
                        $Endereco,
                        $CEP,
                       $Titulo,
                       $file)
   {
       $this->AddPage();
       $this->ChapterTitle($num,
                     $CodigoPessoaJuridica,
                     $PessoaJuridica,
                        $CNPJ,
                        $NomeCidade,
                        $Bairro,
                        $Endereco,
                        $CEP);
       $this->ChapterBody($Titulo,
                     $file);
   }
//   fim da class
}


?>

Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:FPDF error: Some data has already been output, can't send PDF file
« Responder #1 Online: Janeiro 12, 2015, 10:21:10 am »
Mude sc_select(meus_dados,$Sql);
Para sc_select(meus_dados,$Sql,"nomedasuaconexao");

Teste também mudar sc_select para sc_lookup

Lipinski

  • Novato
  • *
  • Mensagens: 7
    • Email
Re:FPDF error: Some data has already been output, can't send PDF file
« Responder #2 Online: Janeiro 12, 2015, 11:28:50 am »
Tentei mas continua a mesma mensagem.

Eu ja havia Tentado com sc_lookup. Mas mesmo assim não funciona.

O estranho era que nos testes estava funcionando.
Foi só tentar dar umamelhoradinha para acontecer isso.

É so colocar sc_lookup ou sc_select para aparecer a mensagem

Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:FPDF error: Some data has already been output, can't send PDF file
« Responder #3 Online: Janeiro 12, 2015, 01:10:51 pm »
Faz um restore da aplicação no menu arquivo, restaurar aplicações.
Tenta fazer essa melhoria novamente na versão anterior que deve funcionar.
Pode ser que tenha alterado algo a mais...

Lipinski

  • Novato
  • *
  • Mensagens: 7
    • Email
Re:FPDF error: Some data has already been output, can't send PDF file
« Responder #4 Online: Janeiro 12, 2015, 02:15:53 pm »
Rodrigo,
Obrigado pela ajuda.
Eu já refiz toda e por algum motivo não funciona.

Como prometi ao cliente entregar hoje o relatorio para teste
estou refazendo de outra maneira.

marciowilliam

  • Intermediário
  • ***
  • Mensagens: 118
    • Email
Re:FPDF error: Some data has already been output, can't send PDF file
« Responder #5 Online: Janeiro 12, 2015, 06:42:27 pm »
Oi jah passei por isto,

Pode ser um simples ;  ou uma aspas.

Recomendo refazer o seu relatorio parte por parte.

exemplo faz o cabecalho.
depois insere a primeira linha de dados, e assim sucessivamente.

Lipinski

  • Novato
  • *
  • Mensagens: 7
    • Email
Re:FPDF error: Some data has already been output, can't send PDF file
« Responder #6 Online: Janeiro 13, 2015, 10:41:14 am »
Obrigado marcio william,

Mas funciona se não colocar o select numa boa
Mas basta colocar um select por mais simples que seja e dá erro
so fazer o select para abrir a tabela mais nada e o erro aparece
Mesmo que ele não seja utilizado.
fiz o debug e o select esta correto.

Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:FPDF error: Some data has already been output, can't send PDF file
« Responder #7 Online: Janeiro 13, 2015, 10:56:56 am »
Teste criando um método php que faz o select e apenas chame ele no código.

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:FPDF error: Some data has already been output, can't send PDF file
« Responder #8 Online: Janeiro 13, 2015, 02:31:01 pm »
Se você usar o sc_lookup vai da certo. Abraço.
F. A.
Analista de Sistemas