Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
arnaldojnr opened this issue May 11, 2023 · 12 comments
Open

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

arnaldojnr opened this issue May 11, 2023 · 12 comments

Comments

@arnaldojnr
Copy link

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
Copy link

savioret commented May 15, 2023

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
Copy link
Author

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
Copy link

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
Copy link
Author

arnaldojnr commented May 16, 2023

/*
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
Copy link

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
Copy link
Author

arnaldojnr commented May 18, 2023

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
Copy link

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
Copy link
Author

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

@savioret
Copy link

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
Copy link
Author

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

Sem título

@savioret
Copy link

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
Copy link
Author

arnaldojnr commented May 25, 2023

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

savioret added a commit to savioret/ex-pdf-php that referenced this issue Jun 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants