Autor Zpráva
ed11
Profil
Hezký večer přeju.

Mám formulář. A taky problémy s češtinou. Vložená formulářová data se mně po odeslání vkládají pomocí PHP skriptu a TCPDF knihovny do souboru PDF. Nicméně mám problém s vykreslením těchto znaků: ř,ť,č,ň,ď,ů,ě.

Obrázek

Když jsem hledal informace o tomto nedostatku, našel jsem mj. také Yuhůův text (asi v polovině stránky).
Cituji:
"Velmi častá chyba zobrazení způsobená absencí meta deklarace. Prohlížeč se domnívá, že je text v západoevropských jazycích (latin 1). Jsou postiženy znaky ě, č, ř, ď ť, ů a ň. Obzvlášť dobře se tato chyba rozpozná podle toho přeškrtnutého o namísto ř a zachováním š a ž.
Některé anglické HTML editory běžně převádějí text tak, že vypadá jako by měl tuto chybu. Ve skutečnosti to podělávají, protože háčkované znaky nahrazují entitami (&něco;). Pak není pomoci, leda to (nejčastěji ručně) opravit. "


Ruční opravování není v tomto případě ani možné...
Přestože jsem našel několik návodů a TCPDF sama předkládá příklad k českému kódování, nepodařilo se mně tento problém opravit. Nejhorší je, že se v kódování nevyznám a možná dělám chybu hned na začátku v HTML souboru? -> <meta charset="windows-1250" />
Když ale vložím charset="utf-8", je to horší už v samotném HTML.

Skript na generování PDF pak obsahuje toto:
$pdf = new pdf('P', 'mm', 'A4', false, 'UTF-8', false);
Změnu na windows-1250, cp-1250, a dost jiných jsem už taky provedl, ale to jen tak z nouze :)

Možná taky dělám chybu ve výběru fontu:
HTML (CSS) =>
@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,700,800&subset=latin-ext,latin);
SKRIPT =>
// nastaveni hlavniho fontu
$pdf->SetFont('helvetica', '', 10, false, false, true);
Zajímalo by mě, kde dělám chybu. Nerozumím kódování. Chtěl bych tento můj nedostatek vyřešit jednou pro vždy, což asi bohužel nebude jenom tak, že ano. Napište, prosím, pokud znáte řešení.
ed11
Profil
Svoje chyby jsem už objevil a kdyby někdo začínající měl stejný problém, ať dá echo.
Davex
Profil
ed11:
Svoje chyby jsem už objevil
Kde byly a jak jsi je opravil?
ed11
Profil
Tak hlavně jsem začal používat Notepad++, který nevím proč jsem neobjevil už dávno.
V záložce formát jsem nastavil kódování UTF 8.
Podle zvoleného DOCTYPE (v mém případě <!DOCTYPE html> jsem použil <meta charset="UTF-8" />

Ve skriptu s připojenou TCPDF knihovnou jsem musel změnit kódování v záložce formát UTF-8 bez BOM a $pdf = new MYPDF('P', 'mm', 'A4', true, 'UTF-8', false); při vytváření nového PDF dokumentu.

Potom už stačilo jen vybrat font s podporou českých znaků (TTF) a jede to, jak má. <meta charset="windows-1250" /> tím pádem nedoporučuju, použitím UTF-8 se vyhnete nejčastějším problémům s kódováním.
-------------
Ještě doplním: V TCPDF se správně zobrazuje např. font dejavu sans

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0