
fpdf cestina
Zdrawim
řeším výpis dat z mysql do pdf...
nejdrive jsem si vtvoril vlastni font prave kvuli cestine a diakritika mi s pomoci iconv funguje kdyz napisu text manualne ale kdyz ho vypisu z mysql tak mi to nevypise zpravne diakritiku
funkcni:
$this->Cell($w[0],6,iconv('utf-8', 'iso-8859-2', 'sěščřžýáíéůú ĚŠČŘŽÝÁÍÉŮÚ'),'1');
nefunkcni:
$this->Cell($w[0],6,iconv('utf-8', 'iso-8859-2', $row['ulice']),'1');
Poradte prosim nekdo uz nevim co stim..
Budu vděčný za každou radu ;)
Kdysi jsme se v tom patlal podobným způsobem pomocí iconv, pak jsem přešel na mpdf a problémy s kódováním nemám. Nic se nepřevádí, prostě děláš v utf.
jj diky moc ale ja uz to mam rozdelany v tom fpdf byl bych rad kdyby se to podarilo v tom... urcite nekdo musel taky resit cestinu v fpdf... :)
zjistil jsem že je to vypisem z mysql jinak vse funguje... resil jste to prosim nekdo??? :)
uz si si vypisal tie bajty toho pola, alebo cakas na spasenie?
nebyl jsem tu .. a koukal jsem primo do databaze a tam to mam v 'utf8_czech_ci'
Vypis si jednotlive bajty z $row['ulice'] (v nejakom cykle). Potom budes vedet ze v jakom to je kodovani, v unicode to asi nebude ked to nefunguje (ale tym vypisom si to overis ze ci fakt, prip. budes vediet jaku mas robit konverziu). Takze potom budes vedet napr. ze sa to skonvertovalo na nejake ine kodovanie tam, kde to pole $row['ulice'] vzniklo. Napriklad.
... a potom budes vediet ze mas googlit slova napr. mysql_fetch_row UNICODE a najdes napr.
http://stackoverflow.com/questions/1198701/storing -and-displaying-unicode-string-using-php-and-mysql
kde je zaujimavy riadok
Neviem ci to je to co potrebujes ptz s mysql nerobim, ale to co ti tu prezentujem je normalny postup vyvojara pri rieseni problemu. Najprv analyza (dat/premennych/apod) -> podla vysledku analyzy najdes riesenie.
toto semsamozdrejme take zkusil a stejne to diakritiku nevypisuje spravne... netusim cim to je ale deje se to jen s textem vypsanym z mysql
a jak si to zkusil? Nechces sem dat trochu viac jak 1 riadok zdrojaku? Ked ti ten zdrojak nejde. Jasnovidci maju volno.
kouknul jsem se do databaze jak je to k tomu radku nastavene...
zde je zdrojek:
<?php
require('fpdf/fpdf.php');
class PDF extends FPDF
{
// Better table
function ImprovedTable($header)
{
// Column widths
$w = array(10, 15, 30, 20, 20, 20, 15, 15, 40, 10);
// Header
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C');
$this->Ln();
// Data
$dbc=mysqli_connect('localhost','xxx','xxx','xxx') ;
//mysql_query("SET character_set_results=CP1250");
$text = iconv('utf-8', 'iso-8859-2','sěščřžýáíéůú ĚŠČŘŽÝÁÍÉŮÚ');
$query_pdf = "SELECT * FROM centr_vchody";
$pdf_result = mysqli_query($dbc,$query_pdf) or die(mysql_error());
while($row = mysqli_fetch_array($pdf_result))
{
$this->Cell($w[0],6,iconv('utf-8', 'iso-8859-2', ''.$row['ulice'].''),'1');
$this->Cell($w[1],6,$text,'1');
$this->Cell($w[2],6,number_format($row[2]),'1',0,' R');
$this->Cell($w[3],6,number_format($row[3]),'1',0,' R');
$this->Cell($w[4],6,number_format($row[3]),'1',0,' R');
$this->Cell($w[5],6,number_format($row[3]),'1',0,' R');
$this->Cell($w[6],6,number_format($row[3]),'1',0,' R');
$this->Cell($w[7],6,number_format($row[3]),'1',0,' R');
$this->Cell($w[8],6,number_format($row[3]),'1',0,' R');
$this->Cell($w[9],6,number_format($row[3]),'1',0,' R');
$this->Ln();
}
// Closing line
$this->Cell(array_sum($w),0,'','T');
}
}
$pdf = new PDF();
// Column headings
$header = array('Byt', 'Patro', iconv('utf-8', 'iso-8859-2','Služba'), 'Telefon', 'Obj. ', 'Konk.', iconv('utf-8', 'iso-8859-2','Služba'), 'Cena', iconv('utf-8', 'iso-8859-2','Poznámky'), 'Kont');
// Data loading
define('FPDF_FONTPATH','../vchody/fpdf/font/');
$pdf->AddFont('muj_font', '', 'arial.php');
$pdf->SetFont('muj_font','',8);
$pdf->AddPage();
$pdf->ImprovedTable($header);
$pdf->AddPage();
$pdf->Output();
?>
Nemas kukat do databaze ale musis dat riadok
mysql_query("SET NAMES utf8");
za ten
mysqli_connect('localhost','xxx','xxx','xxx') ;
Skusil si to?
A ked ten riadok nechces, tak musis nieco prenastavit/pridat v php.ini co sa tyka SQL, ale netusim co :) Viz napr. http://www.php.de/datenbanken/45586-utf-8-nur-mit- set-names.html
prave ze mysql_query("SET NAMES utf8"); jsem skousel... je to divny a v mysql tam mam utf8...