Создание pdf файла с русским языком (шрифтом)

28 Мая 2018
php

Вся суть создания PDF файлов на PHP упирается в добавление русского языка.

По умолчанию поддержки русского языка в библиотеки FPDF нет, поэтому, нам потребуется его подключить.

  1. Скачайте последнюю версию библиотеки FPDF fpdf.org
  2. Выберите любой понравившийся шрифт (я выбрал Arial.ttf) и сгенерируйте необходимые файлы, например здесь fpdf.org/makefont/.

    В результате вы получите 2 файлика (font.php и font.z)

    Шрифт Arial для FPDF (60 кб.)

  3. Переместите полученные файлы в папку font в библиотеке FPDF
  4. Теперь осталось подключить выбранный шрифт:

    // подключаем шрифты
        define('FPDF_FONTPATH',"fpdf/font/");
    // добавляем шрифт ариал
        $pdf->AddFont('Arial','','arial.php'); 
    // устанавливаем шрифт Ариал
        $pdf->SetFont('Arial');
    
  5. Во время вывода конвертируем наш текст в windows-1251 (можно вынести в функцию или еще как то, пока нормальное решение не найдено)

    $pdf->Write(0,iconv('utf-8', 'windows-1251',"Коммерческое предложение"));
    

Ниже представлен пример обычного PDF файла:

// подключаем шрифты
    define('FPDF_FONTPATH',"fpdf/font/");
// подключаем библиотеку
    require('fpdf/fpdf.php');

// создаем PDF документ
    $pdf=new FPDF();
// устанавливаем заголовок документа
    $pdf->SetTitle("kakorin.com test pdf");

// создаем страницу
    $pdf->AddPage('P');
    $pdf->SetDisplayMode(real,'default');
    
// добавляем шрифт ариал
    $pdf->AddFont('Arial','','arial.php'); 
// устанавливаем шрифт Ариал
    $pdf->SetFont('Arial');
// устанавливаем цвет шрифта
    $pdf->SetTextColor(250,60,100);
// устанавливаем размер шрифта
    $pdf->SetFontSize(10);

// добавляем текст
    $pdf->SetXY(10,10);
    $pdf->Write(0,iconv('utf-8', 'windows-1251',"Коммерческое предложение"));

// добавляем на страницу изображение    
    $pdf->Image(dirname(__FILE__) .'/logo.jpg', 100, 250, 100, 49, 'JPG');
    
// выводим документа в браузере
   $pdf->Output('iskspb.ru.pdf','I');
   
// сохранение документ в папку save
    //$pdf->Output('save/'.date("Y-m-d H:i:s").' - iskspb.ru.pdf','F');

Готовый пример (131 кб.)

Шрифт Arial для FPDF (60 кб.)