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();
}
?>