Вопрос по pdf, php – html_entity_decode в FPDF (с использованием расширения tFPDF)

5

Я использую tFPDF для создания PDF. Файл php имеет кодировку UTF-8. я хочу© например, для вывода в формате PDF в виде символа авторского права.

я пыталсяiconv, html_entity_decode, htmlspecialchars_decode, Когда я беру строку, я пытаюсь декодировать и жестко закодировать ее в другой файл и декодировать, она работает как положено. По какой-то причине он не выводится в PDF. Я пробовал буферизацию вывода. я используюDejaVuSansCondensed.ttf (шрифты истинного типа).

Ссылка на tFPDF:http://fpdf.org/en/script/script92.php

У меня нет идей. Я попробовал двойное декодирование, я проверял везде, чтобы убедиться, что он не кодируется где-либо еще.

Помогите!

Possible dupбез ответа:( halfer

Ваш Ответ

5   ответов
12

iconv('UTF-8', 'windows-1252', html_entity_decode($str));

html_entity_decode декодирует HTML-сущности. но по любой причине вы должны преобразовать его в utf8 сiconv, я полагаю, что это fpdf-секрет ... потому что в обычном браузере он отображается правильно.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

что нет автоматического преобразования из кодов сущностей HTML в их эквиваленты UTF-8. В подобных случаях я прибегал к ручной замене строк, например:

$strOut = str_replace( "©", "\xc2\xa9", $strIn );
0

$str = utf8_decode($str);
$str = html_entity_decode($str);
$str =  iconv('UTF-8', 'windows-1252',$str);
0

setFont('Symbol') или жеsetFont('ZapfDingbats') выбрать специальные символы, которые вы хотите напечатать.

define('TICK', chr(214)); # in font 'Symbol' -> print a tick symbol
...
$this->SetFont('Symbol', 'B', 8);
$this->Cell(5, 5, TICK, 0, 'L');    # will output the symbol to PDF

Выход: & # x221A;

Таким образом, вам не нужно конвертировать в ISO-8859-1 или Windows-1252 ИЛИ использовать другую библиотеку tFPDF для специальных символов :)

См:http://www.fpdf.org/en/script/script4.php для шрифта & amp; список персонажей

3

http://www.fpdf.org/~~V/en/FAQ.php#q7

Don't use UTF-8 encoding. Standard FPDF fonts use ISO-8859-1 or Windows-1252. It is possible to perform a conversion to ISO-8859-1 with utf8_decode():

$str = utf8_decode($str); 

But some characters such as Euro won't be translated correctly. If the iconv extension is available, the right way to do it is the following:

$str = iconv('UTF-8', 'windows-1252', $str);

Итак, как предполагает emfi, комбинация PHP-функций iconv () и html_entity_decode () - это решение вашего вопроса:

$str = iconv('UTF-8', 'windows-1252', html_entity_decode("©"));
Error: User Rate Limit Exceeded

Похожие вопросы