0

I have an issue with HTML2PDF, whenever I try to convert html to pdf I'm getting this fatal error:

Fatal error: Uncaught Exception: TCPDF ERROR: Some data has already been output to browser, can't send PDF file in /homepages/34/d794609435/htdocs/marketing/gestionale/contratto/vendor/tecnickcom/tcpdf/tcpdf.php:2950 Stack trace: #0 /homepages/34/d794609435/htdocs/marketing/gestionale/contratto/vendor/tecnickcom/tcpdf/tcpdf.php(7669): TCPDF->Error('Some data has a...') #1 /homepages/34/d794609435/htdocs/marketing/gestionale/contratto/vendor/spipu/html2pdf/src/Html2Pdf.php(575): TCPDF->Output('contratto-4Peop...', 'D') #2 /homepages/34/d794609435/htdocs/marketing/gestionale/contratto/makepdf.php(903): Spipu\Html2Pdf\Html2Pdf->output('contratto-4Peop...', 'D') #3 {main} thrown in /homepages/34/d794609435/htdocs/marketing/gestionale/contratto/vendor/tecnickcom/tcpdf/tcpdf.php on line 2950

Here is the code:


<?php
//Connecting to database
include('connection.php');
//Getting informations

$data = date("d/m/Y", strtotime($_POST['data']));
$luogo_stipula = $mysqli->escape_string(strtoupper($_POST['luogo-stipula']));
$societa_committente = $mysqli->escape_string(strtoupper($_POST['societa-committente']));
$nome_cognome = $mysqli->escape_string(strtoupper($_POST['nome-cognome']));
$codfis = $mysqli->escape_string(strtoupper($_POST['codfis']));
$sede_legale = $mysqli->escape_string(strtoupper($_POST['sede-legale']));
$partita_iva = $mysqli->escape_string(strtoupper($_POST['partita-iva']));
$pec = $mysqli->escape_string(strtoupper($_POST['pec']));
$codice_sdi = $mysqli->escape_string(strtoupper($_POST['codice-sdi']));
$registro_imprese = $mysqli->escape_string(strtoupper($_POST['registro-imprese']));
$numero_rea = $mysqli->escape_string(strtoupper($_POST['numero-rea']));
$numero_preventivo = $mysqli->escape_string(strtoupper($_POST['numero-preventivo']));
$servizi = $mysqli->escape_string(implode(",", $_POST['servizi']));
$token = $mysqli->escape_string($_POST['token']);

//Controlla se il token esiste ancora
$sql = "SELECT id FROM contratti WHERE token = '$token'";
$result = $mysqli->query($sql);
if($result->num_rows == 0) {
    header("Location:error.php");
    exit();
}

$sql = "UPDATE contratti SET `data` = '$data', `luogo_stipula` = '$luogo_stipula', `societa_committente` = '$societa_committente', `nome_cognome` = '$nome_cognome', `codfis` = '$codfis', `sede_legale` = '$sede_legale', `partita_iva` = '$partita_iva', `pec` = '$pec', `codice_sdi` = '$codice_sdi', `registro_imprese` = '$registro_imprese', `numero_rea` = '$numero_rea', `numero_preventivo` = '$numero_preventivo', `servizi` = '$servizi', `accettazione_contratto` = 1, `accettazione_privacy` = 1 WHERE token = '$token'";
$result = $mysqli->query($sql);
//Templating
$testo_contratto = '
<!DOCTYPE html>
<html lang="it">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PDF</title>
    <style>
        @import url("https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,600;0,700:0,900;1,400;1,600;1,700&display=swap");

        * {
            font-family: "Montserrat", sans-serif;
        }
    </style>
</head>

<body>
    <table style="width:280px">
        <tbody>
            <tr style="text-align:center">
                <td>
                    <img src="images/frontespizio.jpg" style="width: 752px;" alt="">
                </td>
            </tr>
            <tr>
                <td>
                    <p
                        style="padding-left:0.5cm; padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:justify">
                        <br><br><br>
                        Data ' . $data . ', luogo ' . $luogo_stipula . ' <br><br>
                        Con la presente scrittura privata redatta in duplice copia tra: <br><br>
                        4People di Daniele Gabrielli, in persona del legale rappresentante Sig. Daniele Gabrielli (C.F.
                        DNL GBR 88R24 F401C) con sede legale in Via Cicerone, 15 - 00072 - Ariccia (RM), P. IVA.
                        00000000000, di seguito abbreviato in "4People" <br><br>
                    </p>
                    <p
                        style="padding-left:0.5cm; padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:center">
                        <b>e la società</b>
                    </p><br>
                    <p
                        style="padding-left:0.5cm; padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:justify">
                        ' . $societa_committente . ', in persona del legale rappresentante Sig./Sig.ra ' . $nome_cognome . ', Cod. Fis.
                        ' . $codfis . ', con sede legale in ' . $sede_legale . ', Partita IVA
                        ' . $partita_iva . ', indirizzo PEC: ' . $pec . ', Codice SDI:  ' . $codice_sdi . ', iscritta al registro delle
                        imprese di ' . $registro_imprese . ', al numero ' . $numero_rea . ', di seguito abbreviato in "Committente",<br><br>
                    </p>
                    <p
                        style="padding-left:0.5cm; padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:center">
                        <b>SI CONVIENE E SI STIPULA QUANTO SEGUE</b>
                    </p>
                    <br>
                    <p
                        style="padding-left:0.5cm; padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:justify">
                        <h4 style="padding-left:0.5cm;">1. PREMESSA</h4>
                        <ul style="list-style-type: none;">
                            <li
                                style="padding-left:0.5cm; padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:justify">
                                1.1. 4People è un\'azienda specializzata nella fornitura di servizi in ambito di
                                Information Technology per le aziende ed i privati.
                            </li>
                            <li
                                style="padding-left:0.5cm; padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:justify">
                                1.2. È interesse del Committente costruire un rapporto fiduciario con 4People, al fine
                                di garantire un\'assistenza continuativa, ad ampio raggio, attraverso costanti contatti e
                                consultazioni, con ciò razionalizzando le modalità, i termini ed i costi di tale
                                assistenza;
                            </li>
                            <li
                                style="padding-left:0.5cm; padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:justify">
                                1.3. 4People condivide gli scopi di cui in premessa e pertanto si impegna a svolgere
                                attività di:
                                <ul>
                                    <li
                                        style="padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:justify">
                                        Consulenza e implementazione di campagne pubblicitarie di Digital Marketing;
                                    </li>
                                    <li
                                        style="padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:justify">
                                        Social Media Management e sviluppo di soluzioni tecnologiche per il web;
                                    </li>
                                    <li
                                        style="padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:justify">
                                        Creazione di contenuti per finalità di digital marketing e marketing offline;
                                    </li>
                                    <li
                                        style="padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:justify">
                                        Progettazione di concept grafici per il web e la stampa;
                                    </li>
                                    <li
                                        style="padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:justify">
                                        Progettazione e sviluppo web;
                                    </li>
                                    <li
                                        style="padding-right:0.5cm; line-height:20px; font-size: 12px; text-align:justify">
                                        Layout grafico e sviluppo di landing page per il marketing.
                                    </li>
                                </ul>
                            </li>
                        </ul>
                    </p>
   
                </td>
            </tr>
        </tbody>
    </table>

</body>

</html>
          
';


require __DIR__.'/vendor/autoload.php';

use Spipu\Html2Pdf\Html2Pdf;

try {
 
    $html2pdf = new Html2Pdf('P', 'A4', 'it');
    $html2pdf->setTestTdInOnePage(false);
    $html2pdf->writeHTML($testo_contratto);
    ob_end_clean();
    $html2pdf->output('contratto-4People.pdf', 'D');


    //Update scaricamento del contratto
    $sql = "UPDATE contratti SET accettato_scaricato = 1 WHERE token = '$token'";
    $mysqli->query($sql);
    //Destroy Token
    $sql = "UPDATE contratti SET token = '0' WHERE token = '$token'";
    $mysqli->query($sql);
    
} catch (Html2PdfException $e) {
    $html2pdf->clean();
    $formatter = new ExceptionFormatter($e);
    echo $formatter->getHtmlMessage();
}
?>
Dave
  • 4,648
  • 16
  • 27
  • 35
thesimon
  • 34
  • 4
  • 1
    Does this answer your question? [TCPDF ERROR: Some data has already been output, can't send PDF file](https://stackoverflow.com/questions/16011050/tcpdf-error-some-data-has-already-been-output-cant-send-pdf-file) – Hugo Jul 07 '20 at 17:25

0 Answers0