rospdf / pdf-php

Official R&OS PHP Pdf repository
http://pdf-php.sourceforge.net/
Other
140 stars 63 forks source link

Does not download as pdf when data is sent by post - Google Chrome #176

Open arnaldojnr opened 1 year ago

arnaldojnr commented 1 year ago

It streams normally but when I click to download it saves a php file instead a pdf, it happens only in Chrome and when data is sent via post.

Captura de tela 2023-05-11 121624

savioret commented 1 year ago

I am able to reproduce it. It seems not directly related with the library but with how you serve the cache control headers and how the browser handles the data based on it. https://stackoverflow.com/questions/71679544/content-disposition-inline-filename-not-working

Changing the header before the ezStream seems to solve the issue but I'm not sure if that should be implemented as an internal fix in the library or should be something external.

header("Cache-Control: no-cache");

Edit: I've checked Cpdf version of the DomPdf project and they are always setting this header (And works also):

header("Cache-Control: private");
arnaldojnr commented 1 year ago

I am able to reproduce it. It seems not directly related with the library but with how you serve the cache control headers and how the browser handles the data based on it. https://stackoverflow.com/questions/71679544/content-disposition-inline-filename-not-working

Changing the header before the ezStream seems to solve the issue but I'm not sure if that should be implemented as an internal fix in the library or should be something external.

header("Cache-Control: no-cache");

Edit: I've checked Cpdf version of the DomPdf project and they are always setting this header (And works also):

header("Cache-Control: private");

Hi Savioret I tried but it did not work

savioret commented 1 year ago

Could you kindly send a simple example of a php POST script and the Pdf creation that you are doing, which reproduces the problem so I can test it locally ?

arnaldojnr commented 1 year ago

/* That's a sample, you'll need to bypass or invent data taken from bd in order to run it

The post variables are: emp turma curso matricula */

    $id = $_POST['emp'];

    include ("../../conexao.php");

     $consulta_tr= ("select banco, nome from turmas where (contador=$_POST[turma] && empresa=$id)");
     $resultado_tr = mysqli_query($conn,$consulta_tr);
     $var_tr=mysqli_fetch_row($resultado_tr);

     $nome_turma=$var_tr[1];

    $turma=$_POST['turma'];

    $curso=$_POST['curso'];

    $aluno=$_POST['matricula'];

    $consulta_cid = ("select censo, uf, nome, id from tb_cidades");
    $resultado_cid = mysqli_query($conn,$consulta_cid);

    while ($row_cid= mysqli_fetch_array($resultado_cid))
    {

      $nome_cidade[$row_cid[0]]=$row_cid[2];
      $nome_uf[$row_cid[0]]=$row_cid[1];  

      $rcid[$row_cid[3]]=$row_cid[2];
      $ruf[$row_cid[3]]=$row_cid[1];

      //echo $nome_cidade[$row_cid[0]]."-".$nome_uf[$row_cid[0]]."<br />";
    }

    $consulta_rf = ("select rf_endereco, rf_numero, rf_bairro, rf_cidade, rf_cep from usuarios where numero=$aluno");
    $resultado_rf = mysqli_query($conn, $consulta_rf);
    $var_rf=mysqli_fetch_row($resultado_rf);

    $rf_cidade=$rcid[$var_rf[3]];
    $rf_uf=$ruf[$var_rf[3]];

    $dia=date('d');// (d) dia do mes com dois digitos
    $mes=date('m');
    $ano=date('Y');

    $mkhj=mktime(0,0,0,$mes,$dia,$ano);//encontra a data de hoje

    //encontra os dados bancarios do cliente

    $consulta1 = ("select * from empresas where contador=$id");
    $resultado1 = mysqli_query($conn,$consulta1);
    $var1=mysqli_fetch_row($resultado1);

    $consulta4 = ("select nome from alunos where (empresa=$id && aluno=$aluno)");
    $resultado4 = mysqli_query($conn,$consulta4);
    $var4=mysqli_fetch_row($resultado4);

    $aluno_nome=$var4[0];

    $consulta3 = ("select * from bancos where (empresa=$id && contador=$var_tr[0])");
    $resultado3 = mysqli_query($conn,$consulta3);
    $var3=mysqli_fetch_row($resultado3);

    $banco= $var3[2];

     //$cedente=$var1[35];
     //$cnpj=$var1[8];

     $carteira=$var3[4];
     $agencia=$var3[5];
     $ag_dv=$var3[6];
     $conta=$var3[7];
     $cc_dv=$var3[8];
     $instrucoes=$var3[9];
     $convenio=$var3[10];
     $contrato=$var3[11];
     $conta_cedente=$var3[12];
     $cc_cd_dv=$var3[13];
     $custo_bol=$var3[14];
     $aceite=$var3[15];
     $especie_doc=$var3[16];
     $variacao=$var3[19];

     $cedente=$var3[21];
     $cnpj=$var3[22];

     if ($banco==1)//Banco do Brasil
          {
          $banco_cl="pdf_bb.php";
          $imagem_path = "../../boleto/imagens/logobb.jpg";
          $local="PAGÁVEL EM QUALQUER AGÊNCIA BANCÁRIA ATÉ O VENCIMENTO";
          include("pdf_bb.php");
          }

     if ($banco==2)//Bradesco
         {$banco_cl="pdf_bradesco.php";
          $imagem_path = "../../boleto/imagens/logobradesco.jpg";
          $local="PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS BRADESCO";
          include("pdf_bradesco.php");
          }

     if ($banco==3)//Caixa (apenas formato sigcb)
         {$banco_cl="pdf_cef_sigcb.php";
          $imagem_path = "../../boleto/imagens/logocaixa.jpg";
         $local="PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE";
          include("pdf_cef_sigcb.php");
          }

    if ($banco==4)//Itaú
         {$banco_cl="pdf_itau.php";
          $imagem_path = "../../boleto/imagens/logoitau.jpg";
          $local="PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO";
          include("pdf_itau.php");
          }

    if ($banco==5)//Santander
         {$banco_cl="pdf_santander.php";
          $imagem_path = "../../boleto/imagens/logosantander.jpg";
          $local="PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO";
          include("pdf_santander.php");
          }

    if ($banco==6)//BNB
         {$banco_cl="pdf_bnb.php";
          $imagem_path = "../../boleto/imagens/logobnb.jpg";
          $local="PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO";
          include("pdf_bnb.php");
          }

    if ($banco==7)//Unicred - Sicredi
         {$banco_cl="pdf_unicred.php";
          $imagem_path = "../../boleto/imagens/logounicred.jpg";
          $local="PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO";
          include("pdf_unicred.php");
          }

     if ($banco==8)//Sicoob - Antigo Bancoob
         {$banco_cl="pdf_bancoob.php";
          $imagem_path = "../../boleto/imagens/logobancoob.jpg";
          $local="PAGÁVEL PREFERENCIALMENTE NO SICOOB";
          include("pdf_bancoob.php");
          }   

    if ($banco==99)//PAGAMENTO INTERNO
         {$banco_cl="";
          $imagem_path = "./";
          $local="$var1[1]";
          }

       //Cria a imagem da logomarca
       $img = @imagecreatefromjpeg($imagem_path);

    //include ('class.ezpdf.php');
    include ('../Cezpdf.php');

    $pdf = new Cezpdf('a5','landscape');

    $pdf->selectFont('../fonts/Helvetica.afm');

    // Início do objeto 2

    $all = $pdf->openObject();

    if ($banco!=99) {
      $pdf->addImage($img,28.3,382.05,108,23); //posiciona a logomarca  no objeto 2
      $pdf->addImage($img,28.3,243.38,108,23); //posiciona a logomarca  no objeto 2
    }

    $img = null;

    $pdf->setLineStyle(.3);

    //Linhas horizontais-----------------------------------------------

    $pdf-> line(    28.3    ,   380.635 ,   577.32  ,   380.635 );
    $pdf-> line(    28.3    ,   362.24  ,   577.32  ,   362.24  );
    $pdf-> line(    28.3    ,   343.845 ,   577.32  ,   343.845 );
    $pdf-> line(    28.3    ,   325.45  ,   577.32  ,   325.45  );
    $pdf-> line(    28.3    ,   307.055 ,   577.32  ,   307.055 );

    $pdf->setLineStyle(.6,'round','',array(0,03)); //Linha pontilhada

    $pdf-> line(    28.3    ,   267.435 ,   577.32  ,   267.435 );
    $pdf-> line(    28.3    ,   407,    577.32  ,   407 );

    $pdf->setLineStyle(.3,'square','',array(1,0)); //Linha normal

    $pdf-> line(    28.3    ,   241.965 ,   577.32  ,   241.965 );
    $pdf-> line(    28.3    ,   223.57  ,   577.32  ,   223.57  );
    $pdf-> line(    28.3    ,   205.175 ,   577.32  ,   205.175 );
    $pdf-> line(    28.3    ,   186.78  ,   577.32  ,   186.78  );
    $pdf-> line(    28.3    ,   168.385 ,   577.32  ,   168.385 );
    $pdf-> line(    441.48  ,   149.99  ,   577.32  ,   149.99  );
    $pdf-> line(    441.48  ,   131.595 ,   577.32  ,   131.595 );
    $pdf-> line(    441.48  ,   113.2   ,   577.32  ,   113.2   );
    $pdf-> line(    441.48  ,   94.805  ,   577.32  ,   94.805  );
    $pdf-> line(    28.3    ,   76.41   ,   577.32  ,   76.41   );
    $pdf-> line(    28.3    ,   50.94   ,   577.32  ,   50.94   );

    //Linhas verticais ----------------------------------------------------

    $pdf-> line(    138.67  ,   406.105 ,   138.67  ,   380.635 );
    $pdf-> line(    336.77  ,   380.635 ,   336.77  ,   325.45  );
    $pdf-> line(    84.9    ,   362.24  ,   84.9    ,   343.845 );
    $pdf-> line(    130.18  ,   343.845 ,   130.18  ,   325.45  );

    $pdf-> line(    138.67  ,   267.435 ,   138.67  ,   241.965 );
    $pdf-> line(    441.48  ,   241.965 ,   441.48  ,   76.41   );

    $pdf-> line(    84.9    ,   205.175 ,   84.9    ,   168.385 );
    $pdf-> line(    124.52  ,   186.78  ,   124.52  ,   168.385 );

    $pdf-> line(    186.78  ,   406.105 ,   186.78  ,   380.635 );
    $pdf-> line(    441.48  ,   380.635 ,   441.48  ,   307.055 );
    $pdf-> line(    234.89  ,   362.24  ,   234.89  ,   325.45  );

    $pdf-> line(    186.78  ,   267.435 ,   186.78  ,   241.965 );

    $pdf-> line(    288.66  ,   205.175 ,   288.66  ,   186.78  );
    $pdf-> line(    175.46  ,   186.78  ,   175.46  ,   168.385 );

    $pdf-> line(    294.32  ,   362.24  ,   294.32  ,   343.845 );

    $pdf-> line(    342.43  ,   205.175 ,   342.43  ,   186.78  );

    $pdf-> line(    365.07  ,   205.175 ,   365.07  ,   186.78  );

     //Inicio dos textos fixos -  (objeto2) ---------------------------------------------

     //Recibo do Pagador

    $pdf->addText(  452.8   ,   389.125 ,   6   ,   "Recibo do Pagador" );
    $pdf->addText(  29.715  ,   374.975 ,   6   ,   "Beneficiário"  );
    $pdf->addText(  339.6   ,   374.975 ,   6   ,   "Agência/Código do beneficiário"    );
    $pdf->addText(  444.31  ,   374.975 ,   6   ,   "Vencimento"    );
    $pdf->addText(  29.715  ,   355.165 ,   6   ,   "Data do documento" );
    $pdf->addText(  87.73   ,   355.165 ,   6   ,   "Número do documento"   );
    $pdf->addText(  237.72  ,   355.165 ,   6   ,   "Espécie"   );
    $pdf->addText(  297.15  ,   355.165 ,   6   ,   "Espécie doc"   );
    $pdf->addText(  339.6   ,   355.165 ,   6   ,   "Nosso número"  );
    $pdf->addText(  444.31  ,   355.165 ,   6   ,   "(=) Valor do documento"    );
    $pdf->addText(  29.715  ,   336.77  ,   6   ,   "(-) Desconto/Abatimento"   );
    $pdf->addText(  133.01  ,   336.77  ,   6   ,   "(-) Outras deduções"   );
    $pdf->addText(  237.72  ,   336.77  ,   6   ,   "(+) Mora/Multa"    );
    $pdf->addText(  339.6   ,   336.77  ,   6   ,   "(+) Outros Acréscimos" );
    $pdf->addText(  444.31  ,   336.77  ,   6   ,   "(=) Valor cobrado" );
    $pdf->addText(  29.715  ,   318.375 ,   6   ,   "Pagador"   );
    $pdf->addText(  444.31  ,   318.375 ,   6   ,   "Código de baixa"   );

    if($banco==3)
    {
      $pdf->addText(  30  , 299.98  , 6 , "SAC CAIXA: 0800 726 0101 (informações, reclamações, sugestões e elogios)"  );
      $pdf->addText(  30  , 291.98  , 6 , "Para pessoas com deficiência auditiva ou de fala: 0800 726 2492" );
      $pdf->addText(  30  , 282.98  , 6 , "Ouvidoria: 0800 725 7474   caixa.gov.br" );
    }

    $pdf->addText(  367.9   ,   299.98  ,   6   ,   "Autenticação mecânica" );

    //Boleto------------------------------------------------------------------

    $pdf->addText(  29.715  ,   234.89  ,   6   ,   "Local de pagamento"    );
    $pdf->addText(  444.31  ,   234.89  ,   6   ,   "Vencimento"    );

    $pdf->addText(  29.715  ,   216.495 ,   6   ,   "Beneficiário"  );
    $pdf->addText(  444.31  ,   216.495 ,   6   ,   "Agência/Código do beneficiário"    );
    $pdf->addText(  29.715  ,   198.1   ,   6   ,   "Data do documento" );
    $pdf->addText(  87.73   ,   198.1   ,   6   ,   "Número do documento"   );
    $pdf->addText(  291.49  ,   198.1   ,   6   ,   "Espécie doc"   );
    $pdf->addText(  345.26  ,   198.1   ,   6   ,   "Aceite"    );
    $pdf->addText(  367.9   ,   198.1   ,   6   ,   "Data do processamento" );
    $pdf->addText(  444.31  ,   198.1   ,   6   ,   "Nosso número"  );
    $pdf->addText(  29.715  ,   179.705 ,   6   ,   "Uso do banco"  );
    $pdf->addText(  87.73   ,   179.705 ,   6   ,   "Carteira"  );
    $pdf->addText(  127.35  ,   179.705 ,   6   ,   "Espécie"   );
    $pdf->addText(  178.29  ,   179.705 ,   6   ,   "Quantidade"    );
    $pdf->addText(  291.49  ,   179.705 ,   6   ,   "Valor" );
    $pdf->addText(  444.31  ,   179.705 ,   6   ,   "(=) Valor do documento"    );
    $pdf->addText(  260.36  ,   169.8   ,   6   ,   "x" );
    $pdf->addText(  322.62  ,   169.8   ,   6   ,   "=" );

    $pdf->addText(  29.715  ,   159.895 ,   6   ,   "Instruções (Texto de responsabilidade do beneficiário) "   );
    $pdf->addText(  444.31  ,   159.895 ,   6   ,   "(-) Desconto/Abatimento"   );
    $pdf->addText(  444.31  ,   141.5   ,   6   ,   "(-) Outras deduções"   );
    $pdf->addText(  444.31  ,   123.105 ,   6   ,   "(+) Mora/Multa"    );
    $pdf->addText(  444.31  ,   104.71  ,   6   ,   "(+) Outros Acréscimos" );
    $pdf->addText(  444.31  ,   87.73   ,   6   ,   "(=) Valor cobrado" );
    $pdf->addText(  29.715  ,   70.75   ,   6   ,   "Pagador"   );
    $pdf->addText(  382.05  ,   70.75   ,   6   ,   ""  );
    $pdf->addText(  29.715  ,   53.77   ,   6   ,   "Sacador/Avalista"  );

    $pdf->addText(  382.05  ,   43.865  ,   6   ,   "Autenticação mecânica "    );
    $pdf->addText(  466.95  ,   43.865  ,   6   ,   "Ficha de compensação"  );

    //------------------------------------------------------------------------------

    $pdf->closeObject();

    $pdf->addObject($all,'all');

    //Fim do objeto 2

    /////////////////////////////////////////////////////////////////////////

    ///////////////////////////////////////////////////////////////

    //Variaveis usadas na construcao do codigo de barras
    $fino = 0.748 ;
    $largo = 2.244 ;
    $altura = 36 ;

    $x=29.715;//posicao x  do codigo de barras

    $y2=$altura; //posicao y (top) do codigo de barras

      $ic=1;

    //Recebendo os dados - Inicio -------------------------------------------------------------------------------------
     $consulta2 = ("select * from cobrancas where  (aluno=$aluno && empresa='$id') order by nome desc, mkv desc  ");
     $resultado2 = mysqli_query($conn,$consulta2);
     $nrows2=mysqli_num_rows ($resultado2);

     while ($row2 = mysqli_fetch_array($resultado2))

     {

      $cont="$row2[0]";

      if (isset($_POST[$cont]))
      {

       if ($ic!=1)
       {

        $pdf->ezNewPage();

        }

      $multa=number_format(floatval($row2['multa']),2,',','');

      $mora=number_format(floatval($row2['mora']),2,',','');

      //$valor_desc=$row2['valort']-$row2['desconto']*$row2['valort']/100;

      $valor_desc=floatval($row2['valort']) - floatval($row2['desconto']);

      $valor_desc=number_format($valor_desc,2,',','');

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // ------------------------- DADOS DINÂMICOS DO SEU CLIENTE PARA A GERAÇÃO DO BOLETO (FIXO OU VIA GET) -------------------- //
    // Os valores abaixo podem ser colocados manualmente ou ajustados p/ formulário c/ POST, GET ou de BD (MySql,Postgre,etc)   //

    // DADOS DO BOLETO PARA O SEU CLIENTE
    $dias_de_prazo_para_pagamento = 5;
    $taxa_boleto = 0;
    $data_venc = "$row2[datav]";  // Prazo de X dias OU informe data: "13/04/2006";
    $valor_cobrado = "$row2[valort]"; // Valor - REGRA: Sem pontos na milhar e tanto faz com "." ou "," ou com 1 ou 2 ou sem casa decimal
    $valor_cobrado = str_replace(",", ".",$valor_cobrado);
    $valor_boleto=number_format($valor_cobrado+$taxa_boleto, 2, ',', '');

    $dadosboleto["nosso_numero"] = "$row2[nossonum]";
    $dadosboleto["numero_documento"] = "$row2[nossonum]";   // Num do pedido ou do documento
    $dadosboleto["data_vencimento"] = $data_venc; // Data de Vencimento do Boleto - REGRA: Formato DD/MM/AAAA
    $dadosboleto["data_documento"] = date("d/m/Y"); // Data de emissão do Boleto
    $dadosboleto["data_processamento"] = date("d/m/Y"); // Data de processamento do boleto (opcional)
    $dadosboleto["valor_boleto"] = $valor_boleto;   // Valor do Boleto - REGRA: Com vírgula e sempre com duas casas depois da virgula

    // DADOS DO SEU CLIENTE
    $dadosboleto["sacado"] = "$row2[nome]";

    if ($banco==1)//Banco do Brasil
    {

        $codigobanco = "001";
        $codigo_banco_com_dv = geraCodigoBanco($codigobanco);
        $nummoeda = "9";
        $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]);

         $dig=strlen($convenio);//Numero de digitos do convenio (adicionado por mim)

        // TIPO DO BOLETO
        $dadosboleto["formatacao_convenio"] = "$dig"; // REGRA: 8 p/ Convênio c/ 8 dígitos, 7 p/ Convênio c/ 7 dígitos, ou 6 se Convênio c/ 6 dígitos
        $dadosboleto["formatacao_nosso_numero"] = "2"; // REGRA: Usado apenas p/ Convênio c/ 6 dígitos: informe 1 se for NossoNúmero de até 5 dígitos ou 2 para opção de até 17 dígitos

        //valor tem 10 digitos, sem virgula
        $valor = formata_numero($dadosboleto["valor_boleto"],10,0,"valor");
        //agencia é sempre 4 digitos
        $agencia = formata_numero($dadosboleto["agencia"],4,0);
        //conta é sempre 8 digitos
        $conta = formata_numero($dadosboleto["conta"],8,0);
        //carteira 18
        $carteira = $dadosboleto["carteira"];
        //agencia e conta
        $agencia_codigo = $agencia."-". modulo_11($agencia) ." / ". $conta ."-". modulo_11($conta);
        //Zeros: usado quando convenio de 7 digitos
        $livre_zeros='000000';

        // Carteira 18 com Convênio de 8 dígitos
        if ($dadosboleto["formatacao_convenio"] == "8") {
            $convenio = formata_numero($dadosboleto["convenio"],8,0,"convenio");
            // Nosso número de até 9 dígitos
            $nossonumero = formata_numero($dadosboleto["nosso_numero"],9,0);
            $dv=modulo_11("$codigobanco$nummoeda$fator_vencimento$valor$livre_zeros$convenio$nossonumero$carteira");
            $linha="$codigobanco$nummoeda$dv$fator_vencimento$valor$livre_zeros$convenio$nossonumero$carteira";
            //montando o nosso numero que aparecerá no boleto
            $nossonumero = $convenio . $nossonumero ."-". modulo_11($convenio.$nossonumero);
        }

        // Carteira 18 com Convênio de 7 dígitos
        if ($dadosboleto["formatacao_convenio"] == "7") {
            $convenio = formata_numero($dadosboleto["convenio"],7,0,"convenio");
            // Nosso número de até 10 dígitos
            $nossonumero = formata_numero($dadosboleto["nosso_numero"],10,0);
            $dv=modulo_11("$codigobanco$nummoeda$fator_vencimento$valor$livre_zeros$convenio$nossonumero$carteira");
            $linha="$codigobanco$nummoeda$dv$fator_vencimento$valor$livre_zeros$convenio$nossonumero$carteira";
          $nossonumero = $convenio.$nossonumero;
            //Não existe DV na composição do nosso-número para convênios de sete posições
        }

        // Carteira 18 com Convênio de 6 dígitos
        if ($dadosboleto["formatacao_convenio"] == "6") {
            $convenio = formata_numero($dadosboleto["convenio"],6,0,"convenio");

            if ($dadosboleto["formatacao_nosso_numero"] == "1") {

                // Nosso número de até 5 dígitos
                $nossonumero = formata_numero($dadosboleto["nosso_numero"],5,0);
                $dv = modulo_11("$codigobanco$nummoeda$fator_vencimento$valor$convenio$nossonumero$agencia$conta$carteira");
                $linha = "$codigobanco$nummoeda$dv$fator_vencimento$valor$convenio$nossonumero$agencia$conta$carteira";
                //montando o nosso numero que aparecerá no boleto
                $nossonumero = $convenio . $nossonumero ."-". modulo_11($convenio.$nossonumero);
            }

            if ($dadosboleto["formatacao_nosso_numero"] == "2") {

                // Nosso número de até 17 dígitos
                $nservico = "21";
                $nossonumero = formata_numero($dadosboleto["nosso_numero"],17,0);
                $dv = modulo_11("$codigobanco$nummoeda$fator_vencimento$valor$convenio$nossonumero$nservico");
                $linha = "$codigobanco$nummoeda$dv$fator_vencimento$valor$convenio$nossonumero$nservico";
            }
        }

        $dadosboleto["codigo_barras"] = $linha;
        $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha);
        $dadosboleto["agencia_codigo"] = $agencia_codigo;
        $dadosboleto["nosso_numero"] = $nossonumero;
        $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv;

        $variacao=" / ".$dadosboleto['variacao_carteira'];

    }
    //------------------------------------------------------------------------------------------------------------------------

    if ($banco==2)// Bradesco
    {

        $codigobanco = "237";
        $codigo_banco_com_dv = geraCodigoBanco($codigobanco);
        $nummoeda = "9";
        $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]);

        //valor tem 10 digitos, sem virgula
        $valor = formata_numero($dadosboleto["valor_boleto"],10,0,"valor");
        //agencia é 4 digitos
        $agencia = formata_numero($dadosboleto["agencia"],4,0);
        //conta é 6 digitos
        $conta = formata_numero($dadosboleto["conta"],6,0);
        //dv da conta
        $conta_dv = formata_numero($dadosboleto["conta_dv"],1,0);
        //carteira é 2 caracteres
        $carteira = $dadosboleto["carteira"];

        //nosso número (sem dv) é 11 digitos
        $nnum = formata_numero($dadosboleto["carteira"],2,0).formata_numero($dadosboleto["nosso_numero"],11,0);
        //dv do nosso número
        $dv_nosso_numero = digitoVerificador_nossonumero($nnum);

        //conta cedente (sem dv) é 7 digitos
        $conta_cedente = formata_numero($dadosboleto["conta_cedente"],7,0);
        //dv da conta cedente
        $conta_cedente_dv = formata_numero($dadosboleto["conta_cedente_dv"],1,0);

        //$ag_contacedente = $agencia . $conta_cedente;

        // 43 numeros para o calculo do digito verificador do codigo de barras
        $dv = digitoVerificador_barra("$codigobanco$nummoeda$fator_vencimento$valor$agencia$nnum$conta_cedente".'0', 9, 0);
        // Numero para o codigo de barras com 44 digitos
        $linha = "$codigobanco$nummoeda$dv$fator_vencimento$valor$agencia$nnum$conta_cedente"."0";

        $nossonumero = substr($nnum,0,2).'/'.substr($nnum,2).'-'.$dv_nosso_numero;
        $agencia_codigo = $agencia."-".$dadosboleto["agencia_dv"]." / ". $conta_cedente ."-". $conta_cedente_dv;

        $dadosboleto["codigo_barras"] = $linha;
        $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha);
        $dadosboleto["agencia_codigo"] = $agencia_codigo;
        $dadosboleto["nosso_numero"] = $nossonumero;
        $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv;

        $variacao="";

    }

    //------------------------------------------------------------------------------------------------------------------------

    if ($banco==3)// Caixa (apenas padrao sigcb)
    {

        // Composição Nosso Numero - CEF SIGCB
        $dadosboleto["nosso_numero1"] = "000"; // tamanho 3

        if ($carteira==2)//Sem registro
         {
            $dadosboleto["nosso_numero_const1"] = "2"; //constanto 1 , 1=registrada , 2=sem registro
            $dadosboleto["carteira"] = "SR";  // Código da Carteira: pode ser SR (Sem Registro) ou CR (Com Registro) - (Confirmar com gerente qual usar)
         }
         else//Com registro
          {
            $dadosboleto["nosso_numero_const1"] = "1"; //constanto 1 , 1=registrada , 2=sem registro
               $dadosboleto["carteira"] = "CR";  // Código da Carteira: pode ser SR (Sem Registro) ou CR (Com Registro) - (Confirmar com gerente qual usar)
          } 

        $dadosboleto["nosso_numero2"] = "000"; // tamanho 3
        $dadosboleto["nosso_numero_const2"] = "4"; //constanto 2 , 4=emitido pelo proprio cliente
        $dadosboleto["nosso_numero3"] = "$row2[nossonum]"; // tamanho 9

        $codigobanco = "104";
        $codigo_banco_com_dv = geraCodigoBanco($codigobanco);
        $nummoeda = "9";
        $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]);

        //valor tem 10 digitos, sem virgula
        $valor = formata_numero($dadosboleto["valor_boleto"],10,0,"valor");
        //agencia é 4 digitos
        $agencia = formata_numero($dadosboleto["agencia"],4,0);
        //conta é 5 digitos
        $conta = formata_numero($dadosboleto["conta"],5,0);
        //dv da conta
        $conta_dv = formata_numero($dadosboleto["conta_dv"],1,0);
        //carteira é 2 caracteres
        //$carteira = $dadosboleto["carteira"]; - Esta linha não deve ser descomentada, causou um erro de gerar nosso numero com início 14 para cobrancas sem registro

        //conta cedente (sem dv) com 6 digitos
        $conta_cedente = formata_numero($dadosboleto["conta_cedente"],6,0);
        //dv da conta cedente
        $conta_cedente_dv = digitoVerificador_cedente($conta_cedente);

        //Verifica o número de caracteres do código do cedente
        $tamanho_cc = strlen($dadosboleto['conta_cedente']);

        //Contas novas, cód cedente com 7 caracteres - o dígito verificador será vazio pois seu espaço será ocupado pelo 7° caractere
        if ($tamanho_cc == 7) {

         $conta_cedente_dv ='';
        }

        //campo livre (sem dv) é 24 digitos
        $campo_livre = $conta_cedente . $conta_cedente_dv . formata_numero($dadosboleto["nosso_numero1"],3,0) . formata_numero($dadosboleto["nosso_numero_const1"],1,0) . formata_numero($dadosboleto["nosso_numero2"],3,0) . formata_numero($dadosboleto["nosso_numero_const2"],1,0) . formata_numero($dadosboleto["nosso_numero3"],9,0);
        //dv do campo livre
        $dv_campo_livre = digitoVerificador_nossonumero($campo_livre);
        $campo_livre_com_dv ="$campo_livre$dv_campo_livre";

        //nosso número (sem dv) é 17 digitos
        $nnum = formata_numero($dadosboleto["nosso_numero_const1"],1,0).formata_numero($dadosboleto["nosso_numero_const2"],1,0).formata_numero($dadosboleto["nosso_numero1"],3,0).formata_numero($dadosboleto["nosso_numero2"],3,0).formata_numero($dadosboleto["nosso_numero3"],9,0);

        //nosso número (sem dv) é 17 digitos
        $nnum2 = formata_numero($dadosboleto["nosso_numero_const1"],1,0).formata_numero($dadosboleto["nosso_numero_const2"],1,0)."/".formata_numero($dadosboleto["nosso_numero1"],3,0).formata_numero($dadosboleto["nosso_numero2"],3,0).formata_numero($dadosboleto["nosso_numero3"],9,0);

        //nosso número completo (com dv) com 18 digitos
        $nossonumero = $nnum2 ."-". digitoVerificador_nossonumero($nnum);

        // 43 numeros para o calculo do digito verificador do codigo de barras
        $dv = digitoVerificador_barra("$codigobanco$nummoeda$fator_vencimento$valor$campo_livre_com_dv", 9, 0);
        // Numero para o codigo de barras com 44 digitos
        $linha = "$codigobanco$nummoeda$dv$fator_vencimento$valor$campo_livre_com_dv";

        $agencia_codigo = $agencia." / ". $conta_cedente ."-". $conta_cedente_dv;

        $dadosboleto["codigo_barras"] = $linha;
        $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha);
        $dadosboleto["agencia_codigo"] = $agencia_codigo;
        $dadosboleto["nosso_numero"] = $nossonumero;
        $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv;

        $variacao="";

    }

    //------------------------------------------------------------------------------------------------------------------------

    if ($banco==4)// Itaú
    {

        $codigobanco = "341";
        $codigo_banco_com_dv = geraCodigoBanco($codigobanco);
        $nummoeda = "9";
        $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]);

        //valor tem 10 digitos, sem virgula
        $valor = formata_numero($dadosboleto["valor_boleto"],10,0,"valor");
        //agencia é 4 digitos
        $agencia = formata_numero($dadosboleto["agencia"],4,0);
        //conta é 5 digitos + 1 do dv
        $conta = formata_numero($dadosboleto["conta"],5,0);
        $conta_dv = formata_numero($dadosboleto["conta_dv"],1,0);
        //carteira 175
        $carteira = $dadosboleto["carteira"];
        //nosso_numero no maximo 8 digitos
        $nnum = formata_numero($dadosboleto["nosso_numero"],8,0);

        $codigo_barras = $codigobanco.$nummoeda.$fator_vencimento.$valor.$carteira.$nnum.modulo_10($agencia.$conta.$carteira.$nnum).$agencia.$conta.modulo_10($agencia.$conta).'000';
        // 43 numeros para o calculo do digito verificador
        $dv = digitoVerificador_barra($codigo_barras);
        // Numero para o codigo de barras com 44 digitos
        $linha = substr($codigo_barras,0,4).$dv.substr($codigo_barras,4,43);

        $nossonumero = $carteira.'/'.$nnum.'-'.modulo_10($agencia.$conta.$carteira.$nnum);
        $agencia_codigo = $agencia." / ". $conta."-".modulo_10($agencia.$conta);

        $dadosboleto["codigo_barras"] = $linha;
        $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); // verificar
        $dadosboleto["agencia_codigo"] = $agencia_codigo ;
        $dadosboleto["nosso_numero"] = $nossonumero;
        $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv;

        $variacao="";

    }

    if ($banco==5)// Santander
    {

        $codigobanco = "033"; //Antigamente era 353
        $codigo_banco_com_dv = geraCodigoBanco($codigobanco);
        $nummoeda = "9";
        $fixo     = "9";   // Numero fixo para a posição 05-05
        $ios      = "0";   // IOS - somente para Seguradoras (Se 7% informar 7, limitado 9%)
                           // Demais clientes usar 0 (zero)
        $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]);

        //valor tem 10 digitos, sem virgula
        $valor = formata_numero($dadosboleto["valor_boleto"],10,0,"valor");
        //Modalidade Carteira
        $carteira = $dadosboleto["carteira"];
        //codigocedente deve possuir 7 caracteres
        $codigocliente = formata_numero($dadosboleto["conta_cedente"],7,0);

        //nosso número (sem dv) é 11 digitos
        $nnum = formata_numero($dadosboleto["nosso_numero"],7,0);
        //dv do nosso número
        $dv_nosso_numero = modulo_11($nnum,9,0);
        // nosso número (com dvs) são 13 digitos
        $nossonumero = "00000".$nnum.$dv_nosso_numero;

        $vencimento = $dadosboleto["data_vencimento"];

        $vencjuliano = dataJuliano($vencimento);

        // 43 numeros para o calculo do digito verificador do codigo de barras
        $barra = "$codigobanco$nummoeda$fator_vencimento$valor$fixo$codigocliente$nossonumero$ios$carteira";

        //$barra = "$codigobanco$nummoeda$fixo$codigocliente$nossonumero$ios$carteira";
        $dv = digitoVerificador_barra($barra);
        // Numero para o codigo de barras com 44 digitos
        $linha = substr($barra,0,4) . $dv . substr($barra,4);

        $agencia_codigo = $agencia." / ". $conta_cedente;

        $dadosboleto["codigo_barras"] = $linha;
        $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha);
        $dadosboleto["agencia_codigo"] = $agencia_codigo ;
        $dadosboleto["nosso_numero"] = $nossonumero;
        $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv;

        $variacao="";   

    }

    if ($banco==6)// BNB
    {

        $codigobanco = "004";
        $codigo_banco_com_dv = geraCodigoBanco($codigobanco);
        $nummoeda = "9";
        $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]);

        //valor tem 10 digitos, sem virgula
        $valor = formata_numero($dadosboleto["valor_boleto"],10,0,"valor");
        //agencia é 4 digitos
        $agencia = formata_numero($dadosboleto["agencia"],4,0);
        //conta é 5 digitos
        $conta = formata_numero($dadosboleto["conta"],5,0);
        //dv da conta
        $conta_dv = formata_numero($dadosboleto["conta_dv"],1,0);
        //carteira é 2 caracteres
        $carteira = $dadosboleto["carteira"];

        //conta cedente (sem dv) com 6 digitos
        $conta_cedente = formata_numero($dadosboleto["conta_cedente"],7,0);

        //dv da conta cedente
        $conta_cedente_dv = formata_numero($dadosboleto["conta_cedente_dv"],1,0);

        //nosso número (sem dv) é 7 digitos
        $nnum = formata_numero($dadosboleto["nosso_numero"],7,0);

        //nosso número completo (com dv) e carteira
        $nossonumero = $nnum .'-'. digitoVerificador_nossonumero($nnum).' '.$carteira;
        //$nossonumero = $nnum .'-'. digitoVerificador_nossonumero($nnum);

        // 43 numeros para o calculo do digito verificador do codigo de barras
        $dv = digitoVerificador_barra("$codigobanco$nummoeda$fator_vencimento$valor$agencia$conta_cedente$conta_cedente_dv$nnum".digitoVerificador_nossonumero($nnum)."$carteira"."000", 9, 0);

        // Numero para o codigo de barras com 44 digitos
        $linha = "$codigobanco$nummoeda$dv$fator_vencimento$valor$agencia$conta_cedente$conta_cedente_dv$nnum".digitoVerificador_nossonumero($nnum)."$carteira"."000";

        $agencia_codigo = $agencia." / ". $conta_cedente ."-". $conta_cedente_dv;

        $dadosboleto["codigo_barras"] = $linha;
        $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha);
        $dadosboleto["agencia_codigo"] = $agencia_codigo;
        $dadosboleto["nosso_numero"] = $nossonumero;
        $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv;

        $variacao="";

    }

    if ($banco==7)// Sicredi
    {

        $codigobanco = "748";
        $codigo_banco_com_dv = geraCodigoBanco($codigobanco);
        $nummoeda = "9";
        $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]);

        //valor tem 10 digitos, sem virgula
        $valor = formata_numero($dadosboleto["valor_boleto"],10,0,"valor");
        //agencia é 4 digitos
        $agencia = formata_numero($dadosboleto["agencia"],4,0);
        //posto da cooperativa de credito é dois digitos
        $posto = formata_numero($dadosboleto["posto"],2,0);
        //conta é 5 digitos
        //$conta = formata_numero($dadosboleto["conta"],5,0);
        $conta = formata_numero($conta_cedente,5,0);// modificação feita por mim após problema com o instituto exitus - 06/08/2019
        //dv da conta
        //$conta_dv = formata_numero($dadosboleto["conta_dv"],1,0);
        $conta_dv = formata_numero($cc_cd_dv,1,0);// modificação feita por mim após problema com o instituto exitus - 06/08/2019
        //carteira é 2 caracteres
        $carteira = $dadosboleto["carteira"];

        //conta cedente (sem dv) com 6 digitos
        //$conta_cedente = formata_numero($dadosboleto["conta_cedente"],7,0);

        //dv da conta cedente
        //$conta_cedente_dv = formata_numero($dadosboleto["conta_cedente_dv"],1,0);

        //fillers - zeros Obs: filler1 contera 1 quando houver valor expresso no campo valor
        $filler1 = 1;
        $filler2 = 0;

        $dt_em=substr($row2['dataem'],-2);//Ano da geração da cobrança com 2 dígitos

        $dadosboleto["inicio_nosso_numero"] = $dt_em;   // Ano da geração do título ex: 07 para 2007
        $dadosboleto["nosso_numero"] = substr($row2['nossonum'],-5); // Nosso numero (máx. 5 digitos) - Numero sequencial de controle.

        // Byte de Identificação do cedente 1 - Cooperativa; 2 a 9 - Cedente
        $byteidt = $dadosboleto["byte_idt"];

        // Codigo referente ao tipo de cobrança: "3" - SICREDI
        $tipo_cobranca = $carteira;//A linha digitável mudará dependendo da carteira 1(registrada) ou 3(sem registro)

        // Codigo referente ao tipo de carteira: "1" - Carteira Simples 
        $tipo_carteira = 1;

        //nosso número (sem dv) é 8 digitos
        $nnum = $dadosboleto["inicio_nosso_numero"] . $byteidt . formata_numero($dadosboleto["nosso_numero"],5,0);

        //calculo do DV do nosso número
        $dv_nosso_numero = digitoVerificador_nossonumero("$agencia$posto$conta$nnum");

        $nossonumero_dv ="$nnum$dv_nosso_numero";

        //formação do campo livre
        $campolivre = "$tipo_cobranca$tipo_carteira$nossonumero_dv$agencia$posto$conta$filler1$filler2";
        $campolivre_dv = $campolivre . digitoVerificador_campolivre($campolivre); 

        // 43 numeros para o calculo do digito verificador do codigo de barras
        $dv = digitoVerificador_barra("$codigobanco$nummoeda$fator_vencimento$valor$campolivre_dv", 9, 0);

        // Numero para o codigo de barras com 44 digitos
        $linha = "$codigobanco$nummoeda$dv$fator_vencimento$valor$campolivre_dv";

        // Formata strings para impressao no boleto
        $nossonumero = substr($nossonumero_dv,0,2).'/'.substr($nossonumero_dv,2,6).'-'.substr($nossonumero_dv,8,1);
        $agencia_codigo = $agencia.".". $posto.".".$conta;

        $dadosboleto["codigo_barras"] = $linha;
        $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha);
        $dadosboleto["agencia_codigo"] = $agencia_codigo;
        $dadosboleto["nosso_numero"] = $nossonumero;
        $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv;

        $variacao="";

    }

    if ($banco==8)// Sicoob - Antigo Bancoob
    {

        //Alerta para zerar o campo nossonum deste cliente - o mesmo só pode conter 6 caracteres
        //É necessário zerar o nossonumero - Contacte o suporte oeducador

        if($row2['nossonum']>990000)
        {
            echo "É necessário zerar o nossonumero - Contacte o suporte oeducador"; exit;
        }

        $IdDoSeuSistemaAutoIncremento = "$row2[nossonum]"; // Deve informar um numero sequencial a ser passada a função abaixo, Até 6 dígitos
        //$agencia = "4293"; // Num da agencia, sem digito
        //$conta = "5789"; // Num da conta, sem digito
        $convenio = "0$conta_cedente"; //Codigo do cliente/DV com um numero 0(zero) na frente EX: 19465-4 fica 0194654/ Cod. do cedente

        $NossoNumero = formata_numdoc($IdDoSeuSistemaAutoIncremento,7);
        $qtde_nosso_numero = strlen($NossoNumero);
        $sequencia = formata_numdoc($agencia,4).formata_numdoc(str_replace("-","",$convenio),10).formata_numdoc($NossoNumero,7);
        $cont=0;

        /* 
        $NossoNumero = formata_numdoc(1,7);  // Até 7 dígitos, número sequencial iniciado em 1 (Ex.: 1, 2...)
        $qtde_nosso_numero = strlen($NossoNumero);
        $sequencia = formata_numdoc($agencia,4).formata_numdoc(str_replace("-","",$convenio),10).formata_numdoc($NossoNumero,7);
        $cont=0;
         */
        $calculoDv = '';
            for($num=0;$num<=strlen($sequencia);$num++)
            {
                $cont++;
                if($cont == 1)
                    {
                        $constante = 3;
                    }
                if($cont == 2)
                    {
                        $constante = 1;
                    }
                if($cont == 3)
                    {
                        $constante = 9;
                    }
                if($cont == 4)
                    {
                        $constante = 7;
                        $cont = 0;
                    }
                $calculoDv = $calculoDv + (substr($sequencia,$num,1) * $constante);
            }

        $Resto = $calculoDv % 11;
        if($Resto == 0 || $Resto == 1)
            {
                $Dv = 0;
            }
        else
            {
                $Dv = 11 - $Resto;
            }

        $dadosboleto["nosso_numero"] = $NossoNumero . $Dv;

        $codigobanco = "756";
        $codigo_banco_com_dv = geraCodigoBanco($codigobanco);
        $nummoeda = "9";
        $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]);
        //valor tem 10 digitos, sem virgula
        $valor = formata_numero($dadosboleto["valor_boleto"],10,0,"valor");
        //agencia é sempre 4 digitos
        $agencia = formata_numero($dadosboleto["agencia"],4,0);
        //conta é sempre 8 digitos
        $conta = formata_numero($dadosboleto["conta"],8,0);
        $carteira = $dadosboleto["carteira"];
        //Zeros: usado quando convenio de 7 digitos
        $livre_zeros='000000';
        $modalidadecobranca = $dadosboleto["modalidade_cobranca"];
        $numeroparcela      = $dadosboleto["numero_parcela"];
        $convenio = formata_numero($dadosboleto["convenio"],7,0);
        //agencia e conta
        $agencia_codigo = $agencia ." / ". $convenio;
        // Nosso número de até 8 dígitos - 2 digitos para o ano e outros 6 numeros sequencias por ano 
        // deve ser gerado no programa boleto_bancoob.php
        $nossonumero = formata_numero($dadosboleto["nosso_numero"],8,0);
        $campolivre  = "$modalidadecobranca$convenio$nossonumero$numeroparcela";
        $dv=modulo_11("$codigobanco$nummoeda$fator_vencimento$valor$carteira$agencia$campolivre");
        $linha="$codigobanco$nummoeda$dv$fator_vencimento$valor$carteira$agencia$campolivre";

        $dadosboleto["codigo_barras"] = $linha;
        $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha);
        $dadosboleto["agencia_codigo"] = $agencia_codigo;
        $dadosboleto["nosso_numero"] = $nossonumero;
        $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv; 

        $variacao="";   
    }

    if ($banco==99)// banco=99 - Pagamento interno
    {
      $dadosboleto["linha_digitavel"] = '';
      $dadosboleto["codigo_banco_com_dv"] = '';
      $dadosboleto["agencia_codigo"]  = '';
      $dadosboleto["especie_doc"]  = '';
      $dadosboleto["codigo_banco_com_dv"] = '';
      $dadosboleto["aceite"]  = '';
      $dadosboleto["carteira"]  = '';
      $dadosboleto["linha"]  = '';
      $linha='';
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

      //Cria retangulos para sombrear os campos vencimento e valor do documento
           $pdf->setColor(0.8,0.8,0.8);

           $pdf->filledrectangle(441.48,343.84,136,37);
           $pdf->filledrectangle(441.48,223.57,136,18.5);
           $pdf->filledrectangle(441.48,168.38,136,18.5);

           $pdf->setColor(0,0,0);

     //Recibo do Pagador----------------------------------------------------------------

       $pdf->addText( 198.1 , 389.125 , 8 ,   $dadosboleto["linha_digitavel"] );
       $pdf->addText( 144.33  , 386.295 , 14  , $dadosboleto["codigo_banco_com_dv"]);
       $pdf->addTextWrap( 65.715  , 372.655 ,  8 ,"$cedente CNPJ: $cnpj");

       $emp_cidade=$nome_cidade[$var1[12]];
       $emp_uf=$nome_uf[$var1[12]];  

       //$pdf->addTextWrap( 65.715  , 363.655 ,330,   8 ,"$var1[9] $var1[10], $var1[11], $emp_cidade - $emp_uf, CEP: $var1[14]");
       $pdf->addTextWrap( 65.715  , 363.655 ,  8 ,"$var1[9] $var1[10], $var1[11], $emp_cidade - $emp_uf");

       $pdf->addText( 339.6 , 363.655 , 9 , $dadosboleto["agencia_codigo"]  );

       $pdf->addTextWrap( 450 , 365.07 , 9 , "<b>$dadosboleto[data_vencimento]</b>",120 ,'right');

       $pdf->addText( 29.715  , 346.675 , 9 ,  $dadosboleto["data_documento"] );
       $pdf->addText( 150 , 346.675 , 9 ,    $dadosboleto["numero_documento"] );
       $pdf->addText( 238 , 346.675 , 9 , "R$"  );//Especie
       $pdf->addText( 297.15  , 346.675 ,   9 , $dadosboleto["especie_doc"] );
       $pdf->addText( 339.6 , 346.675 , 9 , $dadosboleto["nosso_numero"]  );
       $pdf->addTextWrap( 450 , 346.675 , 9 , "<b>$dadosboleto[valor_boleto]</b>",120 ,'right');

       $pdf->addText( 59  , 317.885 , 8 , "$dadosboleto[sacado]   CPF: $row2[cpf]"  );
       $pdf->addText( 59  , 309 , 8 , "$var_rf[0] $var_rf[1], $rf_cidade - $rf_uf, CEP: $var_rf[4]" );

       $pdf->addText( 475.44  , 309.885 , 9 , " " );//Cod. de baixa

     //Boleto----------------------------------------------------------------------------------

       $pdf->addText(   209.42  ,   250.455 ,   12  ,   "<b>$dadosboleto[linha_digitavel]</b>"      );
       $pdf->addText(   144.33  ,   246.21  ,   14  ,   $dadosboleto["codigo_banco_com_dv"]);
       $pdf->addText(   444.31  ,   234.89  ,   6   ,   "Vencimento"    );
       $pdf->addTextWrap(   450 ,   224.985  , 9    , "<b>$dadosboleto[data_vencimento]</b>", 120  ,'right');
       $pdf->addText(   29.715  ,   224.985 ,   9   ,   "<b>$local</b>" );
       $pdf->addTextWrap(   30  ,   206.59  ,   9   ,"<b>$cedente CNPJ: $cnpj</b> ",430);
       $pdf->addTextWrap(   450 ,   206.59  ,   9 ,$dadosboleto["agencia_codigo"]   ,120,'right');
       $pdf->addText(   30  ,   188.195 ,   6   ,   $dadosboleto["data_documento"]      );
       $pdf->addText(   156 ,   188.195 ,   9   ,   $dadosboleto["numero_documento"]    );
       $pdf->addText(   291 ,   188.195 ,   9   ,   $dadosboleto["especie_doc"] );
       $pdf->addText(   345.26  ,   188.195 ,   9   ,   $dadosboleto["aceite"]  );
       $pdf->addText(   367.9   ,   188.195 ,   9   ,   $dadosboleto["data_processamento"]  );
       $pdf->addTextWrap(   450 ,   188.195,    9 , $dadosboleto["nosso_numero"] ,120,'right');
       $pdf->addText(   87.73   ,   169.8   ,   9   ,   "$dadosboleto[carteira]$variacao"   );
       $pdf->addText(   127.35  ,   169.8   ,   9   ,   "R$"    );
       $pdf->addTextWrap(   450 ,   169.8   ,   9 , "<b>$dadosboleto[valor_boleto]</b>" ,120    ,'right');

    //Instrucoes

    if ($row2['desconto']!=0 )
      $pdf->addText(29.715  ,   150 ,   9   ,   "Se pago até $row2[data_desconto], cobrar R$ $valor_desc");

    $arq_origem="boletos2.php";//Será usado para chamar o arquivo abaixo
    //chama o arquivo abaixo para mudar o nome do infantil caso a empresa = 38
    include("../../particularidades.php");

    /*
    if ($row2['multa']==0) //Multa=0
      $pdf->addText(29.715  ,   140 ,   9   ,   "Não cobrar multa após o vencimento");

      else
      $pdf->addText(29.715  ,   140 ,   9   ,   "Se pago após o vencimento, cobrar multa de R$ $multa mais juros de R$ $mora ao dia");

    */

    if ($row2['multa']!=0) //Multa!=0
      $pdf->addText(29.715  , 140 , 9 , "Se pago após o vencimento, cobrar multa de R$ $multa mais juros de R$ $mora ao dia");

    if($row2['tipo']==1) $st="Matrícula $row2[periodo]";
     else if($row2['tipo']==0) $st="Mensalidade $row2[parcela]";
       else if($row2['tipo']==4) $st="Negociação $row2[parcela]";
        else $st=$row2['descricao'];

       $pdf->addText( 29.715  , 112.05  , 7 , "Aluno: [$aluno] $aluno_nome" );

       $pdf->addText( 29.715  , 99.05 , 7 , "Referente a: $st"  );
       $pdf->addText( 30  , 89.145  , 7 , "Curso: $row2[n_curso]" );
       $pdf->addText( 30  , 79.24 , 7 , "Turma: $nome_turma n° $row2[turma] - $row2[n_cidade]"  );
       $pdf->addText( 59  , 68.5  , 8 , "$dadosboleto[sacado]      CPF: $row2[cpf]" );
      // $pdf->addText( 481 , 62.26 , 9 , ""  );//cod de baixa
       $pdf->addText( 59  , 59.77 , 8 , "$var_rf[0] $var_rf[1], $rf_cidade - $rf_uf, CEP: $var_rf[4]"   );

    $pdf->ezSetY(138); //Seta a altura do texto referente as instrucoes

    $pdf->ezText("$row2[instrucoes]",9);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////

      $y1=13.15;//posicao y (bottom) do codigo de barras

    //Inicio do codigo de barras

    $valor=$linha;

      $barcodes[0] = "00110" ;
      $barcodes[1] = "10001" ;
      $barcodes[2] = "01001" ;
      $barcodes[3] = "11000" ;
      $barcodes[4] = "00101" ;
      $barcodes[5] = "10100" ;
      $barcodes[6] = "01100" ;
      $barcodes[7] = "00011" ;
      $barcodes[8] = "10010" ;
      $barcodes[9] = "01010" ;
      for($f1=9;$f1>=0;$f1--){
        for($f2=9;$f2>=0;$f2--){
          $f = ($f1 * 10) + $f2 ;
          $texto = "" ;
          for($i=1;$i<6;$i++){
            $texto .=  substr($barcodes[$f1],($i-1),1) . substr($barcodes[$f2],($i-1),1);
          }
          $barcodes[$f] = $texto;
        }
      }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Desenho da barra

    //Guarda inicial

    $largura=$fino;

    //fino para as 4 primeiras barras

    $pdf->setColor(0,0,0);
    $pdf->filledRectangle($x,$y1,$largura,$y2);
    $x=$x+$largura;

    $pdf->setColor(1,1,1) ;
    $pdf->filledRectangle($x,$y1,$largura,$y2);
    $x=$x+$largura;

    $pdf->setColor(0,0,0);
    $pdf->filledRectangle($x,$y1,$largura,$y2);
    $x=$x+$largura;

    $pdf->setColor(1,1,1) ;
    $pdf->filledRectangle($x,$y1,$largura,$y2);
    $x=$x+$largura;

    $texto = $valor ;
    if((strlen($texto) % 2) <> 0){
        $texto = "0" . $texto;
    }

    // Draw dos dados
    while (strlen($texto) > 0)
    //inicio do laco
    {
      $i = round(esquerda($texto,2));
      $texto = direita($texto,strlen($texto)-2);
      $f = $barcodes[$i];
      for($i=1;$i<11;$i+=2){
        if (substr($f,($i-1),1) == "0") {
          $f1 = $fino ;
        }else{
          $f1 = $largo ;
        }

         $pdf->setColor(0,0,0);// barra  preta
         $pdf->filledRectangle($x,$y1,$f1,$y2);
         $x=$x+$f1;

        if (substr($f,$i,1) == "0") {
          $f2 = $fino ;
        }else{
          $f2 = $largo ;
        }

         $pdf->setColor(1,1,1) ; // barra  branca (verde)
         $pdf->filledRectangle($x,$y1,$f2,$y2);
         $x=$x+$f2;

      }

    } //fim do laco

    //3 ultimas barras
    $largura=$largo;

    $pdf->setColor(0,0,0);
    $pdf->filledRectangle($x,$y1,$largura,$y2);
    $x=$x+$largura;

    $largura=$fino;

    $pdf->setColor(1,1,1) ;
    $pdf->filledRectangle($x,$y1,$largura,$y2);
    $x=$x+$largura;

    $largura=$fino;

    $pdf->setColor(0,0,0);
    $pdf->filledRectangle($x,$y1,$largura,$y2);
    $x=$x+$largura;

    $x=29.715;//Retorna a posicao x inicial

    //Fim do codigo de barras

    //Fim da exposicao dos dados ----------------------------------------------------------------------------------

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    //escreve na tab. cobrancas o cod. de baixa que e igual ao nosso numero apos processado

      $up1= ("update cobrancas set

      cod_baixa='$dadosboleto[nosso_numero]'

      where (empresa='$id' && contador=$row2[contador])

      ");

      //or die ("Não foi possivel inserir os dados");

      if (mysqli_query($conn,$up1));

       // $pdf->ezText("$row2[parcela] - $row2[nome] ");
       //    $pdf->ezText('');  //quebra de linha

       $ic++;

      }
     }

    //Recebendo os dados - Fim-------------------------------------------------------------------------------------

    $pdf->ezStream();
savioret commented 1 year ago

Sorry I cannot run that code. I just need a simple example with a few lines of code with a dummy $pdf object that receives a dummy $_POST and where that problem occurs. That way I can easily test it, otherwise I can't help you.

arnaldojnr commented 1 year ago

Sorry I cannot run that code. I just need a simple example with a few lines of code with a dummy $pdf object that receives a dummy $_POST and where that problem occurs. That way I can easily test it, otherwise I can't help you.

Dear Savioret

Here it's a tiny sample. If you run it directly you will save normally, but if you send data by post it saves as php file, not as pdf. It happens only in google Chrome

include ('../Cezpdf.php');

$pdf = new Cezpdf('a5','landscape');

$pdf->setLineStyle(.3);

$pdf-> line( 28.3 , 380.635 , 577.32 , 380.635 ); $pdf-> line( 28.3 , 362.24 , 577.32 , 362.24 );

$pdf->addText( 452.8 , 389.125 , 10 , "Any text" );

$pdf->ezStream();

savioret commented 1 year ago

did not you set the cache header as explained ?

This is working for me. Please paste this in a single php file and try it.

include ('../Cezpdf.php');

if ( $_SERVER['REQUEST_METHOD'] == 'POST') {

    $pdf = new \Cezpdf('a5', 'landscape');

    $pdf->setLineStyle(.3);

    $pdf->line(28.3, 380.635, 577.32, 380.635);
    $pdf->line(28.3, 362.24, 577.32, 362.24);

    $pdf->addText(452.8, 389.125, 10, "Any text");

    // set the cache control as explained above
    header("Cache-Control: private");
    $pdf->ezStream( );
}
else {
    echo '<form method="POST">
    <input type="submit" />
    </form>';
}

Remember that by default you will get the file downloaded as "file.pdf". Also make sure you are not using an old version of the library.

If you need to specify another name use Content-Disposition

$pdf->ezStream( ['Content-Disposition' => 'MyDesiredFilename.pdf']);
arnaldojnr commented 1 year ago

I set the cache correctly and updated the version but still doesn't work for me

savioret commented 1 year ago

Can you run the script I provided in a single php file and execute it while Chrome devtools are open and check your response headers after the POST ? Like this:

image

arnaldojnr commented 1 year ago

If after the post I reload clicking Ctrl+F5 it works normally, and the warning of Provisional Headers disapears

Sem título

savioret commented 1 year ago

Then you'll first need to work on solving that "provisional headers" problem, which seems a server side configuration problem, and not directly related with the library. That could be a cross-origin related problem, or perhaps caused by a chrome plugin. Try to run it in a new incognito window to discard any plugin can interfere.

arnaldojnr commented 1 year ago

Yes, it worked in incognito mode, but in the normal window it still remains, even after disabling all extensions