Кодировка FPDF utf-8 (HOW-TO) - PullRequest
       67

Кодировка FPDF utf-8 (HOW-TO)

70 голосов
/ 13 июня 2011

Кто-нибудь знает, как установить кодировку в пакете FPDF на utf-8?Или, по крайней мере, для ISO-8859-7 (греческий), который поддерживает греческие символы?

В основном я хочу создать файл PDF, содержащий греческие символы.George

Ответы [ 18 ]

1 голос
/ 25 июля 2018

Вместо этого решения iconv:

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

Вы можете использовать следующее:

$str = mb_convert_encoding($str, "UTF-8", "Windows-1252");

См .: Как преобразовать символы Windows-1252 в значения в php?

1 голос
/ 28 февраля 2019

просто отредактируйте ячейку функции в файле fpdf.php, найдите строку, которая выглядит следующим образом

function cell ($w, $h = 0, $txt = '', $border = 0, $ln = 0, $align = '', $fill = false, $link = '')
{ 

после нахождения строки

написать после {,

$txt = utf8_decode($txt);

сохраните файл и готово, акценты и кодировка utf8 будут работать:)

1 голос
/ 26 октября 2016

Для потомков.

Как мне удалось добавить русский язык в fpdf на моем компьютере с Linux:

1) Перейдите на http://www.fpdf.org/makefont/ и конвертируйте свой шрифт ttf (например,AerialRegular.ttf) в 2 файла с использованием кодировки ISO-8859-5 : AerialRegular.php и AerialRegular.z

2) Поместите эти 2 файла в fpdf / font каталог

3) Используйте его в своем коде:

$pdf = new \FPDI();
    $pdf->AddFont('ArialMT','','ArialRegular.php');
    $pdf->AddPage();
    $tplIdx = $pdf->importPage(1);
    $pdf->useTemplate($tplIdx, 0, 0, 211, 297); //width and height in mms
    $pdf->SetFont('ArialMT','',35);
    $pdf->SetTextColor(255,0,0);
    $fullName = iconv('UTF-8', 'ISO-8859-5', 'Алексей');
    $pdf->SetXY(60, 54);
    $pdf->Write(0, $fullName);
0 голосов
/ 05 февраля 2016

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

  1. Строка может содержать символы UTF-8.

Для этого я сначала закодировал его в html-сущности с htmlentities(), а затем расшифровал их до iso-8859-1. Пример:

$s = html_entity_decode(htmlentities($my_variable_text), ENT_COMPAT | ENT_HTML401, 'iso-8859-1');
  1. Исправлена ​​строка с html-сущностями:

Для этого я просто оставил htmlentities() вызов. Пример:

$s = html_entity_decode("Treasurer/Trésorier", ENT_COMPAT | ENT_HTML401, 'iso-8859-1');

Затем я передал $s в FPDF, как в этом примере:

$pdf->Cell(100, 20, $s, 0, 0, 'L');

Примечание: ENT_COMPAT | ENT_HTML401 является стандартным значением для параметра # 2, как в http://php.net/manual/en/function.html-entity-decode.php

Надеюсь, это поможет.

0 голосов
/ 06 июня 2014

У FPDF есть расширение под названием UFDPF http://acko.net/blog/ufpdf-unicode-utf-8-extension-for-fpdf/

Но, imho, лучше использовать mpdf, если вы можете изменить класс.

0 голосов
/ 26 августа 2015

Вы можете применить эту функцию к вашему тексту:

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

Спасибо

0 голосов
/ 07 мая 2016

Я знаю, что этот вопрос старый, но я думаю, что мой ответ поможет тем, кто не нашел решения в других ответах. Итак, моя проблема заключалась в том, что я не мог отображать хорватские символы в своем PDF. Во-первых, я использовал FPDF, но, думаю, он не поддерживает Unicode. Наконец, то, что решило мою проблему - это tFPDF, версия FPDF, которая поддерживает Unicode. Вот пример, который работал для меня:

require('tFPDF/tfpdf.php');
$pdf = new tFPDF();
$pdf->AddPage();
$pdf->AddFont('DejaVu','','DejaVuSansCondensed.ttf',true);
$pdf->AddFont('DejaVu', 'B', 'DejaVuSansCondensed-Bold.ttf', true);

$pdf->SetFont('DejaVu','',14);

$txt = 'čćžšđČĆŽŠĐ';
$pdf->Write(8,$txt);

$pdf->Output();
0 голосов
/ 11 декабря 2015

Я использую FPDF для ASP, и функция iconv недоступна. Кажется странным, что я решил проблему UTF-8, добавив , добавив в файл фальшивое изображение (1x1px jpeg) сразу после функции AddPage ():

pdf.Image "images/fpdf.jpg",0,0,1

Таким образом, акцентированные символы правильно добавляются в мой pdf, не спрашивайте меня, почему, но это работает.

...