Stampare carattere simbolo euro

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Buongiorno a tutti,
ho un problema che si verifica quando stampo con fpdf una pagina che contiene il simbolo dell'euro,

per farvi un esempio sul gestionale ho un campo che si chiama "note", se ad esempio nel campo note scrivo
PREVENTIVO TAGLIANDO € 250 TEST € - lato gestionale lo visualizzo correttamente, quando invece
genero una stampa con fpdf la stessa nota diventa:
PREVENTIVO TAGLIANDO € 250 TEST €

cortesemente, mi dareste una mano a risolvere ?

Questo il codice php che genera il pdf

PHP:
<?php
session_start();
ob_start();
require('fpdf/fpdf.php');
define('€',chr(128));
include('inc/db.php');

/* DEFINISCO DUE VARIABILI PER RICHIAMARE LA DATA E L'ORA DI STAMPA ALLA FINE DEL DOCUMENTO*/
date_default_timezone_set('Europe/Rome'); //definisco il timezone per l'italia
$data_stampa = date("d/m/Y"); //gg/mm/aaaa
$ora_stampa = date("H:i:s"); //hh:mm




if (isset($_GET['id_app'])) {
$id_app = (int)$_GET['id_app'];

$sql1 = "SELECT * FROM appuntamenti WHERE id_app = '$id_app'";
$res1 = $mysqli->query($sql1);

while ($row = $res1->fetch_array(MYSQLI_ASSOC)) {
$id_app = mysqli_real_escape_string($mysqli, $row['id_app']);
$cliente = mysqli_real_escape_string($mysqli, strtoupper($row['cliente']));
$data = mysqli_real_escape_string($mysqli, $row['data']);
$ora = mysqli_real_escape_string($mysqli, $row['ora']);
$gestore = mysqli_real_escape_string($mysqli, strtoupper($row['gestore']));
$veicolo = mysqli_real_escape_string($mysqli, strtoupper($row['veicolo']));
$targa = mysqli_real_escape_string($mysqli, strtoupper($row['targa']));
$stato_pren = mysqli_real_escape_string($mysqli, strtoupper($row['stato_pren']));
$tipo_pren = mysqli_real_escape_string($mysqli, strtoupper($row['tipo_pren']));
$telefono = mysqli_real_escape_string($mysqli, strtoupper($row['telefono']));
$note = mysqli_real_escape_string($mysqli, strtoupper($row['note']));
$note = str_replace('\r\n' , ' ', $note);
$note = stripslashes($note);
$data = strtotime($data);
$data = date('d/m/Y', $data);

}
}

// crea l'istanza del documento se attivo l'header devo modificarlo in $p = new pdf();
$p = new fpdf();


//setto i margini sinistro, superiore e destro
$margine_sx=10;
$margine_top=5;
$margine_dx=10;
$p->SetMargins($margine_sx, $margine_top, $margine_dx);
// inizializza il documento
$p->Open();


// aggiunge una pagina
$p->AddPage();

// Impostare le caratteristiche del carattere
$p->SetTextColor(0);
$p->SetFont('Arial', '', 10);

$p->SetFont('Times','B',14);
$p->Cell(185, 10, 'MODULO ACCETTAZIONE' ,1,1,'C');
$p->Ln(5);

// Creo le celle Anagrafica

$p->SetFont('Times', 'B', 12);
$p->Cell(100, 5, ' Accettatore :',0);
$p->Line(12,25,85,25);


$p->Cell(85, 5, 'Codice chiave : ',0,1);
$p->Ln(0);
$p->Line(111,25,190,25);


$p->SetFont('Times', 'B', 12);
$p->Cell(100, 15, ' Km :',0);
$p->Line(12,35,85,35);


$p->Cell(85, 15, 'Targa : ',0,1);
$p->Ln(0);
$p->Line(111,35,190,35);


$p->SetFont('Times', 'B', 12);
$p->Ln(0);
$p->Cell(100, 5, ' Data : '.$data.'',0);
$p->Cell(85, 5, 'Ora : '.$ora.'',0,1);
$p->Ln(3);
$p->Cell(100, 5, ' Cliente : '.$cliente.'',0);
$p->Cell(85, 5, 'Telefono : '.$telefono.'',0,1);
$p->Ln(3);
$p->Cell(100, 5, ' Gestore : '.$gestore.'',0);
$p->Cell(85, 5, 'Veicolo : '.$veicolo.'',0,1);
$p->Ln(3);
//$p->Cell(100, 5, ' Tipo Prenotazione : '.$tipo_pren.'',0);
//$p->Cell(85, 5, 'Stato Prenotazione : '.$stato_pren.'',0,1);
$p->Ln(2);

$p->SetFont('Times','B',14);
$p->Cell(185, 10, 'LAMENTATO CLIENTE' ,1,1,'C');
$p->SetFont('Arial', 'B', 10);
$p->Cell(185, 7, ''.$note.'' ,1,1);
$p->Ln(7);

$p->SetFont('Times','B',14);
$p->Cell(185, 10, 'NOTE CAPOFFICINA' ,1,1,'C');
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Cell(185, 7, '' ,1,1);
$p->Ln(10);

$p->SetFont('Times', 'B', 10);
$p->Cell(1, 5, '',0);                                                            /*1 DEFINISCE L'INIZIO DELLA SCRITTA DATA STAMPA*/
$p->Cell(75, 5, 'Stampato il '.$data_stampa.' alle ore '.$ora_stampa.'',0,0);      /*50 DEFINISCE LO SPAZIO TRA LA SCRITTA DATA STAMPA E FIRMA TECNICO - LO ZERO FINALE DICE DI NON ANDARE A CAPO*/
$p->Cell(80, 5, '',0);
$p->Cell(35, 5, 'Firma Tecnico',0,1);

// Creo Descrizione Intervento - Q.ta - Prezzo Unitario - Importo

// Creo le linee verticali tabella | 215 definisce la lunghezza
$p->Line(10,0,10,0);
$p->Line(195,0,195,0);

// Senza parametri rende il file al browser
$p->output();
ob_end_flush();
?>
 
Ultima modifica:

elpirata

Utente Attivo
18 Mar 2009
264
7
18
PHP:
define('EURO', chr(128));


Ciao @Alex_70 anzitutto grazie per la risposta,
ma esattamente dove devo inserire questa direttiva, se la sostituisco a quella già esistente ovvero
PHP:
define('€', chr(128));
non cambia nulla.

Attenzione, volevo precisare che nel database nonostante la tabella abbia codifica utf8 il dato è memorizzato esattamente come viene letto da fpdf ovvero PREVENTIVO TAGLIANDO € 250 TEST €
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Ho risolto in questo modo,
spero sia corretto...

PHP:
if (isset($_GET['id_app'])) {
$id_app = (int)$_GET['id_app'];

$sql1 = "SELECT * FROM appuntamenti WHERE id_app = '$id_app'";
$res1 = $mysqli->query($sql1);

while ($row = $res1->fetch_array(MYSQLI_ASSOC)) {
$id_app = mysqli_real_escape_string($mysqli, $row['id_app']);
$cliente = mysqli_real_escape_string($mysqli, strtoupper($row['cliente']));
$data = mysqli_real_escape_string($mysqli, $row['data']);
$ora = mysqli_real_escape_string($mysqli, $row['ora']);
$gestore = mysqli_real_escape_string($mysqli, strtoupper($row['gestore']));
$veicolo = mysqli_real_escape_string($mysqli, strtoupper($row['veicolo']));
$targa = mysqli_real_escape_string($mysqli, strtoupper($row['targa']));
$stato_pren = mysqli_real_escape_string($mysqli, strtoupper($row['stato_pren']));
$tipo_pren = mysqli_real_escape_string($mysqli, strtoupper($row['tipo_pren']));
$telefono = mysqli_real_escape_string($mysqli, strtoupper($row['telefono']));
$note = mysqli_real_escape_string($mysqli, strtoupper($row['note']));
$note = str_replace('\r\n' , ' ', $note);
$note = stripslashes($note);
$note = iconv('UTF-8', 'windows-1252', $note); // Converto il carattere € presente nel database con il simbolo dell'€
$data = strtotime($data);
$data = date('d/m/Y', $data);

 }
}
 

Hormus

Utente Attivo
26 Giu 2020
83
10
8
Devi semplicemente effettuare la connessione in UTF-8 attualmente il simbolo euro nella codifica UTF-8 un singolo carattere corrisponde a tre byte, ciò spiega se la connessione è in ISO-8859-1 vedi tre caratteri al posto di uno.
Questo è il modo per impostare il charset in realtà dovrebbe essere preceduto da SET NAMES 'utf8'; prendi spunto dalla classe database di wordpress.
 
  • Like
Reactions: elpirata
Discussioni simili
Autore Titolo Forum Risposte Data
S Stampare Carattere Tramite INPUT pulsante HTML e CSS 5
I stampare una stringa echo PHP 2
F Stampare valori di un database PHP 14
A Stampare dati da form PHP 8
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
G leggere file txt e stampare con php il contenuto a video PHP 7
F stampare a video i risultati della query PHP 1
elpirata Ricavare e stampare indirizzo ip da array associativo PHP 0
B Stampare una porzione della pagina PHP 0
V Come stampare su Excel tabella con rowspan e colspan Javascript 2
W Stampare file PDF in varie modalità. Windows e Software 5
L pdo (stampare un valore con ritorno a funzione) PHP 0
P [PHP] Aggiungere giorni e stampare risultato da data inserita in input PHP 3
P [PHP] Stampare record di diverse tabelle ma con nomi uguali PHP 6
K [PHP] Stampare tabella da database differenti. PHP 4
M Stampare con php e mysql PHP 8
L [PHP] stampare un'array di un database PHP 0
J modifica spooler di stampa per stampare in ordine di nome i files pdf Windows e Software 2
T PHP+MYSQL: stampare record con numero progressivo PHP 3
cristoforo58 Stampare dei valori XML in PHP PHP 0
elpirata [PHP] Stampare i valori di una variabile scritta su più righe PHP 1
K [PHP] Cancellare e Stampare tabella PHP 3
M [PHP] come stampare un Qr-code in FPDF PHP 8
M [Javascript] "Stampare" nel codice Var JS Javascript 5
N [PHP] stampare pagina html PHP 0
fulviozecchin [Java] Stampare intervallo tra due interi senza cicli Java 2
F [PHP] Stampare dati inviati tramite ajax PHP 0
elpirata [RISOLTO]Stampare giorno della settimana in tabella php PHP 6
elpirata [PHP] [RISOLTO] Stampare classe css in base al risultato della query PHP 6
Fuego2806 Stampare dati Form su immagine di sfondo con html HTML e CSS 1
Fuego2806 [PHP] Stampare dati Form su immagine di sfondo con html PHP 70
webmachine [PHP] Problema: Stampare tutte le occorrenza di una SELECT PHP 2
momeraths come stampare immagini contenute in un database PHP 7
I stampare in video i dati inseriti nel db PHP 1
M Sito "e-commerce", stampare dati di registrazione e dati dell'acquisto da pagine diverse PHP 7
L Stampare immagine php PHP 2
elpirata Stampare a video in echo table il risultato di una query PHP 4
Shyson Stampare lista in ordine decrescente Database 1
A Stampare senza sidebar Javascript 0
F stampare array php PHP 2
N Non stampare valori duplicati PHP 1
T Stampare maschera fronte/retro MS Access 0
C Stampare font personalizzati HTML e CSS 2
S estrarre e stampare a video un record in un div PHP 7
N FPDF stampare pdf automaticamente su stampante impostata PHP 0
M Stampare valore di un array PHP 1
P Stampare a video PHP 1
P Stampare '<?' in php PHP 7
D Stampare una query in una tabella MySQL 2
P Stampare valore font-size da css con javascript Javascript 2

Discussioni simili