New question

Question:

Date: 21-06-2019 06:20:10 (In Spanish)

mPDF error: Some data has already been output to browser, can't send PDF file[Unresolved]

Buen Dia, estoy creando un PDF con html y PHP, pero para cada planilla debe generar un QR ya tengo librerias para generar el QR, ahora cuando quiero agregarlo a mi PDF, me da este error: mPDF error: Some data has already been output to browser, can't send PDF file....solo me muestra por debajo la imagen QR...dejo un fragmento del codigo...Gracias de antemanos por la ayuda.

define('MPDP_PATH', 'MPDF54/');
ob_clean();//Limpa o buffer de saída

$textqr=$_POST['textqr'];//Recibo la variable pasada por post
$sizeqr=$_POST['sizeqr'];//Recibo la variable pasada por post
include('vendor/autoload.php');//Llamare el autoload de la clase que genera el QR
use Endroid\QrCode\QrCode;


$qrCode = new QrCode($textqr);//Creo una nueva instancia de la clase
$qrCode->setSize($sizeqr);//Establece el tamaño del qr
//header('Content-Type: '.$qrCode->getContentType());
$image= $qrCode->writeString();//Salida en formato de texto

$imageData = base64_encode($image);//Codifico la imagen usando base64_encode

echo $mensaje='<img src="data:image/png;base64,'.$imageData.'">';

$mpdf = new mPDF(['mode' => 'en-GB-x','margin_left' => 15,'margin_right' => 15,'margin_top' => 15,'margin_bottom' => 15,'margin_header' => 6,'margin_footer' => 3,]);
$html = mb_convert_encoding($html, 'UTF-8', 'UTF-8');
$stylesheet = file_get_contents('estilos.css');

//LUEGO ARMO EL PDF//

$resultado_pag1='
<!-- TITULO DEL FORMATO -->
<br>

<div id="result" style="display:block">'.$mensaje.'</div>

<h4 class="lineaTitulo" align="center">EXAMEN PSICOSOCIAL</h4>
<h4 class="lineaTitulo" align="center">ADULTO LIBERTAD</h4>
<p class="lineas">FECHA DE EVALUACION</p>
<p class="lineas">____/______/________</p>
<div>
<table width="100%">
<tr>
<th align="center">
<h4>DATOS DE IDENTIFICACION DEL PRIVADO(A) DE LIBERTAD</h4>
</th>
</tr>
</table>
</div>

$mpdf->WriteHTML($stylesheet,1);
$mpdf->WriteHTML($resultado_pag1);
$mpdf->AddPage();

Nota: solo he colocado una parte de PDF/html lo que pasa es que información sensible y debo solo colocar pedazos referencial a lo que requiero hacer....
Tags: HTML - Javascript - JSON - PDF - PHP - PHP Advanced Votes: 0 - Answers: 3 - Views: 7 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 22-06-2019 15:55:06 Habría que ver mejor cómo estás usando el output buffer... veo en tu código que usás ob_clean, así que imagino que estarás metiendo cosas en el buffer antes...

    Fijate dónde se está manipulando el buffer, seguramente viene por ahí el tema.
      Votes: 0 - Link answer
     
  • Date: 24-06-2019 03:31:30 Generalmente este mensaje de error se produce porque envías información al navegador antes de enviar las cabeceras. Sin ver tu código completo es difícil decirlo pero la línea que produce el error podría ser esta:
    echo $mensaje='<img src="data:image/png;base64,'.$imageData.'">';
    

    Ya que indicas que después de ella ya no ves nada.
      Votes: 0 - Link answer
     
  • Date: 25-06-2019 05:49:13 Gracias chicos, si ese es el error "echo" porque lo envia a imprimir y yo quiero que lo incluya dentro del pdf que estoy creando. Pago el codigo completo para que lo veas mejor...

    index.php
    require('../includes.php');

    $tipoPlanilla='PL-';
    $d=rand(1,30);

    $generarCodigo='
    <!doctype html>
    <html lang="en">
    <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

    <title>Generador de códigos QR con PHP</title>
    </head>
    <body>

    <div class="container" >
    <form method="post" id="generador">
    <div class="row">
    <div class="col-md-4">
    <div class="form-group">
    <input type="hidden" class="form-control" id="textqr" value="'.$tipoPlanilla.$d.'">
    </div>

    <button type="submit" class="btn btn-primary" >Examen Psicosocial: Adulto en Libertad</button>
    </div>
    <div class="col-md-2">
    <div class="form-group">
    <input type="hidden" class="form-control" id="sizeqr" value="100">
    </div>
    </div>

    <div class="result" name="qr_pdf" id="qr_pdf" style="display: none"></div>
    </form>
    </div>

    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
    <script>
    $( "#generador" ).submit(function( event ) {
    var textqr=$("#textqr").val();
    var sizeqr=$("#sizeqr").val();
    parametros={"textqr":textqr,"sizeqr":sizeqr};
    $.ajax({
    type: "POST",
    url: "adulto_libertad.php",
    data: parametros,
    success: function(datos){
    $("#qr_pdf").img(datos);
    }

    })

    event.preventDefault();
    });
    </script>
    </body>

    </div> ';


    $html->salidaFinal($tituloPagina='Registro de Estatus',$Nmenu='menu2',$generarCodigo);
    ?>
    Lo recibe:
    adulto_libertad.php
    <?php

    require("../includes.php");
    include('../../framework/librerias/MPDF54/mpdf.php');
    /*extract($_POST);
    print_r($_POST['qr_pdf']);
    exit();*/

    $textqr=$_POST['textqr'];//Recibo la variable pasada por post
    $sizeqr=$_POST['sizeqr'];//Recibo la variable pasada por post
    include('vendor/autoload.php');//Llamare el autoload de la clase que genera el QR
    use Endroid\QrCode\QrCode;


    $qrCode = new QrCode($textqr);//Creo una nueva instancia de la clase
    $qrCode->setSize($sizeqr);//Establece el tamaño del qr
    //header('Content-Type: '.$qrCode->getContentType());
    $image= $qrCode->writeString();//Salida en formato de texto

    $imageData = base64_encode($image);//Codifico la imagen usando base64_encode

    echo $mensaje='<img src="data:image/png;base64,'.$imageData.'">';

    $mpdf = new mPDF(['mode' => 'en-GB-x','margin_left' => 15,'margin_right' => 15,'margin_top' => 15,'margin_bottom' => 15,'margin_header' => 6,'margin_footer' => 3,]);
    $html = mb_convert_encoding($html, 'UTF-8', 'UTF-8');
    $stylesheet = file_get_contents('estilos.css');
    $resultado_pag1='
    <!-- TITULO DEL FORMATO -->
    <br>
    <!-- AQUI DEBERIA IR EL QR QUE SE ME A FORMADO Y QUE TRAIGO DEL INDEX.
    '.$mensaje.' O EL <div class="result" name="qr_pdf" id="qr_pdf"></div>-->

    <h4 class="lineaTitulo" align="center">EXAMEN PSICOSOCIAL</h4>
    <h4 class="lineaTitulo" align="center">ADULTO LIBERTAD</h4>
    <p class="lineas">FECHA DE EVALUACION</p>
    <p class="lineas">____/______/________</p>
    <div>
    <table width="100%">
    <tr>
    <th align="center">
    <h4>DATOS DE IDENTIFICACION DEL PRIVADO(A) DE LIBERTAD</h4>
    </th>
    </tr>
    </table>
    </div>
    $mpdf->WriteHTML($stylesheet,1);
    $mpdf->WriteHTML($resultado_pag1);
    $mpdf->Output('Formulario Adulto en Libertad.pdf','I');

    ALGO ASI ES LO QUE DESEO...QUE SALGA EL PDF Y EN LA PARTE SUPERIOR ME DIBUJE EL CODIGO QR QUE HE GENERADO POR CADA PLANILLA...

    De antemanos muchísimas gracias por interesarse en este tema, seria bueno conseguir la solución y dejarla plasmada acá...a futuro puede ayudar a cualquier colega ;)...
      Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com