dompdf karakter codering UTF-8
Im proberen om pdf te creëren met de juiste tekens, maar er zijn “?” tekens.
Ik heb een test php-bestand, waar Im proberen om fing de beste oplossing. Als Im openen in de browser de html-I lijkt op ok
UTF-8 --> UTF-8 : X Ponuka číslo € černý Češký
Maar als ik kijk in de pdf-ik zie dit
UTF-8 --> UTF-8 : X Ponuka ?íslo € ?erný ?ešký
Hier is mijn code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>č s š Š</title>
</head>
<body>
<?php
require_once("dompdf/dompdf_config.inc.php");
$tab = array("UTF-8", "ASCII", "Windows-1250", "ISO-8859-2", "ISO-8859-1", "ISO-8859-6", "CP1256");
$chain = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style></style><title>č s š Š</title></head><body>';
foreach ($tab as $i)
{
foreach ($tab as $j)
{
$chain .= "<br> $i --> $j : ".iconv($i, $j, 'X Ponuka číslo € černý Češký <br>');
}
}
$chain .= '<p style="font-family: firefly, verdana, sans-serif;">??????X Ponuka číslo € černý Češký <br></p></body></html>';
echo $chain;
echo 'X Ponuka číslo € černý Češký <br>';
$filename = 'pdf/_1.pdf';
$dompdf = new DOMPDF();
$dompdf->load_html($chain, 'UTF-8');
$dompdf->set_paper('a4', 'portrait'); //change these if you need to
$dompdf->render();
file_put_contents($filename, $dompdf->output());
?>
</body>
</html>
Wat Im verkeerd doen? Ik heb geprobeerd veel opties die ik gevonden heb 🙁 Enig idee?
- De meeste bibliotheken niet mogelijk om gegevens te laden in een andere codering dan u vertellen expliciet de bibliotheek te laden. Dit resulteert vaak in het vraagtekens dan. Dus ik heb eigenlijk afvragen waarom denk je dat het wel met DOMPDF dit anders moeten zijn? Ook gewoon proberen door alle opties kan goed spelen, maar als dat spelen geen resultaten oplevert snelle, moet je een andere strategie om te begrijpen wat er gaande is.
- Ik heb verschillende opties, omdat het moeilijk was om uit te vinden hoe het werkt, de charset ISO-8859-2 is er geen enkele bruikbare info over het, ik heb veel gegoogled, en ik wilde UTF-8, waar elke char is ok!
- Ja, UTF-8 is een goede keuze als u wilt ondersteuning van alle (op computer systemen) bekende personages. Echter in de code hierboven, hoeft u meerdere coderingen in dezelfde snaar. Dat kan nooit goed uit te werken. In plaats daarvan is het beter om uit te vinden welke codering je snaren oorspronkelijk hebben. En dan met de specifieke codering om te zetten naar UTF-8. Je moet alleen wel een enkele re-encoding hier. Dit antwoord kan worden interesing ook voor u: stackoverflow.com/a/5159071/367456
Moet je lezen over de Unicode-How-to weer. Het grootste probleem is dat je niet opgeven, een lettertype dat wordt ondersteund in uw tekens. Het lijkt erop dat je hebt gelezen hoe je, want je gebruikt het lettertype voorbeeld van dat document. Maar het voorbeeld is niet bedoeld voor het toepassen van wereldwijd tot elk document, dompdf niet firefly (een Chinees lettertype) of Verdana standaard.
Als u geen lettertype wordt opgegeven dan dompdf valt terug naar een van de core-fonts (Helvetica, Times Roman, Courier), die alleen ondersteuning voor Windows ANSI-codering. Dus altijd zeker van om de stijl van uw tekst een lettertype ondersteunt Unicode-codering en de tekens die u wilt weergeven.
Met dompdf 0.6.0 kunt u gebruik maken van de meegeleverde Deja Vu lettertypen. Dus de volgende zou moeten werken (alleen de HTML-code):
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
en lettertype werd ingesteld binnen de css-en body-tag:font-family: Helvetica,"Times New Roman", serif;
€
(de Windows-ANSI-teken positie).Ik heb UTF-8-tekens te werken met deze combinatie.
Voordat u doorgeven html DOMpdf, zorg codering covert met dit:
Gebruik DejaVu font in je css
Zorg ervoor dat u hebt ingesteld utf-8-codering in de HTML –
<head>
tagNu alle speciale tekens zijn werken “ÿ č č ť ū ą á é í”
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
gewerktAlleen Toevoegen
voordat
</head>
Het werkt voor mij.
utf8_decode() deed de truc voor mij met enkele duitse vertalingen, zoals ä en ü.
Niets uit de genoemde antwoorden heeft me geholpen. Na uren van de strijd ben ik overgestapt naar niklasravnsborg/laravel-pdf heeft bijna precies dezelfde syntaxis en het gebruik, en alles werkt goed.
Dompdf ondersteunt geen fallback-fonts, dus u kunt geen gebruik maken van uw favoriete lettertype als het niet op je personages, en je kan ook niet worden ingesteld door een ander lettertype worden de fallback-lettertype voor die tekens, zoals
droid sans fallback
.Wat je kunt doen is gebruik te maken van regex unicode-script bereiken: https://www.regular-expressions.info/unicode.html wikkel deze blokken tekst in omspant en geef ze de fallback-lettertype.
Voorbeeld:
Verwante: https://github.com/dompdf/dompdf/issues/1508
Als je het niet erg met slechts één tekenset wijzigen u kunt elke karakterset in
dompdf_font_family_cache.dist.php
net als
Ik weet dat het niet de beste manier, maar het bespaart veel tijd
Chinese karakters problemen soms.
Het belangrijkste is om goede lettertype hier is een lijst die u kunt downloaden.
Koos ik voor het eerst de naam “Kai Vet Lettertype” hier is een download pagina
Zet het op uw hosting-service in een openbare map. Ik zet het in
en hier is mijn html-voorbeeld
PS. er is een kleine kans dat je nodig zou kunnen hebben deze set:
Ik had het zelfde probleem en ik heb het opgelost is erg simpel.
Gewoon importeren google fonts met de vereiste taal subset in je CSS-bestand dat is gebruikt bij het genereren van HTML. Specificeer de utf-8 in uw HTML-bestand en het werkt…
Ik had hetzelfde probleem en eindigde met tcpdf.Hoop dat dit nuttig zouden kunnen zijn.
http://www.tcpdf.org/
Probleem is het lettertype dat ik gebruik.Ik was in staat om de juiste uitvoer gebruik van dit lettertype ‘freeserif’.Ik denk dat het mogelijk zou zijn om dezelfde output gebruik van dit lettertype met dompdf.
Hier is het voorbeeld dat ik heb gebruikt.
tcpdf utf-8 voorbeeld