Кто-нибудь знает, как установить кодировку в пакете FPDF на utf-8? Или, по крайней мере, ISO-8859-7 (греческий), который поддерживает греческие символы?
В основном я хочу создать файл PDF, содержащий греческие символы.
Любые предложения помогут. Джордж
unicode
utf-8
character-encoding
fpdf
йоргос
источник
источник
Ответы:
Не используйте кодировку UTF-8. Стандартные шрифты FPDF используют ISO-8859-1 или Windows-1252. Преобразование в ISO-8859-1 можно выполнить с помощью
utf8_decode()
:$str = utf8_decode($str);
Но некоторые символы, такие как евро, не будут переведены правильно. Если расширение iconv доступно, правильный способ сделать это:$str = iconv('UTF-8', 'windows-1252', $str);
источник
Также существует официальная версия FPDF для UTF-8 под названием tFPDF http://www.fpdf.org/en/script/script92.php
Вы можете легко переключиться с исходного FPDF, просто убедитесь, что вы также используете шрифт Unicode, как показано в примере в приведенной выше ссылке или в моем коде:
Я думаю, что гораздо более элегантно использовать это вместо рассылки utf8_decode () повсюду, и возможность использовать файлы .ttf непосредственно в AddFont () также является положительным моментом.
Любой другой ответ здесь - это просто способ избежать или обойти проблему, а отказ от UTF-8 не является реальным вариантом для современного проекта.
Существуют также альтернативы, такие как mPDF или TCPDF (и другие), которые основаны на FPDF, но предлагают расширенные функции, имеют поддержку UTF-8 и могут интерпретировать HTML-код (конечно, с ограничениями, поскольку нет прямого способа конвертировать HTML в PDF). Большая часть кода FPDF может использоваться непосредственно в этих библиотеках, поэтому его довольно легко перенести.
https://github.com/mpdf/mpdf http://www.tcpdf.org/
источник
есть действительно простое решение этой проблемы.
В файле fpdf.php перейдите к строке, которая гласит:
В моей версии fpdf это строка 648. Вставьте следующую строку кода:
(над строкой кода)
Это работает для всех немецких специальных символов, а также для греческих специальных символов. В противном случае просто замените cp1252 соответствующим алфавитом, который вам нужен. Здесь вы можете увидеть все поддерживаемые символы: http://en.wikipedia.org/wiki/Windows-1252
Я видел решение здесь: http://fudforum.org/forum/index.php?t=msg&goto=167345 Воспользуйтесь приведенным выше примером кода, поскольку исходный автор забыл вставить дефис между utf и 8.
Надеюсь, это было полезно.
Даан
источник
Сначала вам нужно сгенерировать шрифт. Вы должны использовать
MakeFont
утилиту, включенную в пакет FPDF. Я использовал в Linux этот немного расширенный скрипт из демонстрации:Затем я скопировал сгенерированные файлы в
font
каталог своей сети и использовал это:(Я работал на столе.) , Который работал на моем языке ( Бунка Jedna является чешским для сотовых один ). Чешский язык относится к центральноевропейским языкам, также ISO-8859-2. К сожалению, пользователь FPDF вынужден терять преимущества кодировки UTF-8. Вы не можете получить это в своем PDF-файле:
Датское письмо
ø
становитсяř
ISO-8859-2.Предложение решения: вам необходимо получить греческий шрифт, сгенерировать шрифт с использованием правильной кодировки (ISO-8859-7) и использовать
iconv
ту же целевую кодировку, что и шрифт, сгенерированный.источник
Существует расширение FPDF, называемое mPDF, которое позволяет использовать шрифты Unicode.
http://www.mpdf1.com/mpdf/index.php
источник
Этот ответ не сработал для меня, мне также нужно было запустить декодирование html в строке. Видеть
Реквизиты переходят в emfi из html_entity_decode в FPDF (с использованием расширения tFPDF)
источник
Ни одно из вышеперечисленных решений не сработает.
Попробуй это:
источник
Вы можете создать класс для расширения FPDF и добавить это:
}
источник
Я хотел ответить на этот вопрос всем, кто не перешел на TFPDF по какой-либо причине (интеграция фреймворка и т. Д.)
Перейдите по ссылке : http://www.fpdf.org/makefont/index.php
Использовать
.ttf
шрифт, совместимый с языком, который вы хотите использовать. Убедитесь, что вы выбрали правильный номер кодировки для вашего языка. Загрузите файлы и вставьте их в текущий каталог шрифтов FPDF.Используйте это, чтобы активировать новый шрифт:
$pdf->AddFont($font_name,'','Your_Font_Here.php');
Тогда можно будет
$pdf->SetFont
нормально пользоваться.В самом шрифте используйте iconv для преобразования в UTF-8. Так что, например, если вы используете иврит, вы бы это сделали
iconv('UTF-8', 'windows-1255', $first_name)
.Замените кодировку Windows на кодировку вашего языка.
Для справа налево быстрое исправление делает что-то вроде
strrev(iconv('UTF-8', 'windows-1255', $first_name))
.источник
просто отредактируйте ячейку функции в файле fpdf.php, найдите строку, которая выглядит так
после нахождения линии
напишите после
{
,сохраните файл и готово, акценты и кодировка utf8 будут работать :)
источник
Как мне создать PDF-файлы в FPDF, которые поддерживают китайский, японский, русский и т. Д.?
(снимки используемого кода ниже)
Я хотел бы предоставить: краткое изложение проблемы, решение, проект github с рабочим кодом и онлайн-пример с ожидаемым итоговым PDF-файлом.
Проблема :
На самом деле вам нужен шрифт, поддерживающий символы UTF-8, которые вы используете.
IE, просто используя Helvetica и пытаясь отобразить японский язык, не сработает. Если вы используете Font Forge или какой-либо другой инструмент для работы со шрифтами, вы можете прокрутить до китайских символов шрифта и увидеть, что они пусты.
У Google есть шрифт (шрифт Noto ), который содержит все языки, и его размер составляет 20 МБ, что обычно в несколько раз больше размера вашего текста. Итак, вы можете понять, почему многие шрифты просто не охватывают все языки.
Решение :
Я использую пакеты шрифтов Round-mgenplus-20140828.ttf и ZCOOL_QingKe_HuangYou.ttf для японского и китайского языков, которые имеют открытый исходный код и могут быть найдены во многих проектах с открытым исходным кодом. В самом tFPDF или его новом наследующем классе, например
class HTMLtoPDF extends tFPDF {...}
, вы сделаете это ...Больше ничего не должно быть!
Пакет кода на GitHub:
https://github.com/HoldOffHunger/php-html-to-pdf
Рабочая онлайн-демонстрация японского языка:
https://www.earthfluent.com/privacy.pdf?language=ja
источник
Для потомков.
Как мне удалось добавить русский язык в fpdf на моей Linux-машине:
1) Перейдите на http://www.fpdf.org/makefont/ и преобразуйте шрифт ttf (например, AerialRegular.ttf) в 2 файла, используя кодировку ISO-8859-5 : AerialRegular.php и AerialRegular.z
2) Поместите эти 2 файла в FPDF / FONT каталог
3) Используйте это в своем коде:
источник
Вместо этого решения iconv:
Вы можете использовать следующее:
См .: Как преобразовать символы Windows-1252 в значения в php?
источник
Существует расширение FPDF под названием UFDPF http://acko.net/blog/ufpdf-unicode-utf-8-extension-for-fpdf/
Но, imho, лучше использовать mpdf, если вы можете изменить класс.
источник
Вы можете применить эту функцию к своему тексту:
благодаря
источник
Я использую FPDF для ASP, и функция iconv недоступна. Это кажется странным, но я решил проблему UTF-8, добавив поддельное изображение (1x1px jpeg) в pdf сразу после функции AddPage ():
Таким образом, акцентированные символы правильно добавляются в мой PDF-файл, не спрашивайте меня, почему, но это работает.
источник
Не уверен, подойдет ли это для греческого языка, но у меня была такая же проблема с бразильскими португальскими символами, и я решил использовать html-сущности. У меня было в основном два случая:
Для этого я сначала закодировал его в html-объекты,
htmlentities()
а затем декодировал их вiso-8859-1
. Пример:Для них я просто оставил
htmlentities()
вызов. Пример:Затем я перешел
$s
к FPDF, как в этом примере:Примечание:
ENT_COMPAT | ENT_HTML401
это стандартное значение для параметра №2, как в http://php.net/manual/en/function.html-entity-decode.phpНадеюсь, это поможет.
источник
Я знаю, что это старый вопрос, но я думаю, что мой ответ поможет тем, кто не нашел решения в других ответах. Итак, моя проблема заключалась в том, что я не мог отображать хорватские символы в моем PDF-файле. Во-первых, я использовал FPDF, но, думаю, он не поддерживает Unicode. Наконец, что решило мою проблему, так это tFPDF, который является версией FPDF, поддерживающей Unicode. Это пример, который сработал для меня:
источник