TCPDF практические заметки (документация) на русском

SetMargins - поля страницы или отступы

$pdf->SetMargins (20, 10, 10);
 
//  $pdf->getMargins()
$margin = $pdf->getMargins();
$totalHeight - $margin['bottom'] - $margin['top'];
SetMargins ($left, $top, $right = -1, $keepmargins = false);

$left - слева
$top - сверху
$right - справа
$keepmargins - сохранять поля (необяз) показывает, что значения отступов по умолчанию заменяются нашими собственными значениями

AddPage - создание страницы

$pdf->AddPage ();

SetAutoPageBreak - авто создание страницы когда место закочится

$pdf->SetAutoPageBreak (true, 10);

автоматически создавать следующую страницу при достижении конца (36 пунктов от нижнего края) предыдущей.

Включает или отключает автоматический режим разбивки страницы. При включении вторым параметром является расстояние от нижней части страницы, которое определяет предел срабатывания. По умолчанию режим включен, а край составляет 2 см.

setCellHeightRatio - высота строки (line-height)

$pdf->setCellHeightRatio (1.5);

SetX - положение по X

SetX ($x, $rtloff = false)

Определяет абсцисс текущей позиции. Если переданное значение отрицательное, оно относится к правой части страницы (или осталось, если язык RTL).

SetY - положение по Y

$this->SetY (-1.5 * 72, true);SetY ($y, $resetx = true, $rtloff = false);

Перемещает текущую абсцисс обратно в левое поле и устанавливает ординату. Если переданное значение отрицательное, оно относится к нижней части страницы.

SetXY - положение по X и Y

Определяет абсцисс текущей позиции. Если переданное значение отрицательное, оно относится к правой части страницы (или осталось, если язык RTL).

GetX - возвращает положение по X

$pdf->GetX ();

Номер страницы

$pdf->PageNo ();

MultiCell - ячейка таблицы

MultiCell ($w (Ширина), $h(Высота),
    $txt (Текст), $border(Бордюр)= 0, $align (Выравнивание по гор.) = 'J', $fill (Цвет ячейки) = 0, $ln (куда след.) = 1, 
    $x (Горизонталь) = '', $y (Вертикаль) = '', $reseth (Сброс последней высоты ячейки) = true, $stretch (режим растяжения) = 0, 
    $ishtml (содержимое HTML) = false, $autopadding (Автозаполнение  - учет ширины линии) = true, $maxh (Максимальная высота) = 0,
    $valign (Выравнивание по верт.)='M', $fitcell (Подходящая ячейка) =false);
$pdf->MultiCell ($w = 19.6, $h = 4.5, 
  $txt = "Код", $border = array('LTRB' => array('width' => 0.1)), $align = 'L', $fill = 0, $ln = 10, 
  $x = '',  $y = '', $reseth = true, $stretch = 0, 
  $ishtml = false, $autopadding = true, $maxh = $h, 
  $valign = 'M', $fitcell = true);

$w - Ширина
$h - Высота
$txt - Текст
$border - Бордюр
$align - Выравнивание по горизонтали
$fill - Цвет ячейки
$ln - куда следующая (или $lnmode - перевод каретки 0 - переводит как TAB в Excel, 1 - переводит как Enter)

  • 0: вправо TAB

  • 1: к началу следующей строки [ПО УМОЛЧАНИЮ] 

  • 2: ниже Enter


$x - Горизонталь
$y - Вертикаль
$reseth - Сброс последней высоты ячейки
$ishtml - содержимое HTML
$autopadding - Автозаполнение  - учет ширины линии
$maxh - Максимальная высота
$valign - Выравнивание по вертикали
$fitcell - Подходящая ячейка

Автоматическая высота ячейки

$h = 0;

Что бы высота ячейки задавалась автоматически в зависимости от содержимого нужно указать (2ым аргументом) значение 0. Например:

$pdf->MultiCell ($w = $td1_100 * 75, $h = 0, 
  "{$doc_kem_vydan}", array('B' => array('width' => 0.1)), $align='L', $fill=0, $ln=10, 
  $x = $nextX, $y = $nextY, $reseth = true, $stretch = 0, 
  $ishtml=false, $autopadding=true, $maxh='', 
  $valign='B', $fitcell=true);

Соответственно, что бы следующая ячейка знала откуда ей следует начинаться по ординате Y воспользуйтесь функцией: $pdf->GetY ();

SetFont - шрифт

$pdf->SetFont ('arial','',8); 
SetFont ($family, $style = '', $size = null, $fontfile = '', $subset = 'default', $out = true);

Устанавливает шрифт, используемый для печати символьных строк. Шрифт может быть либо стандартным, либо шрифтом, добавленным с помощью метода AddFont ().

Стандартные шрифты используют кодировку Windows cp1252 (Западная Европа). Этот метод можно вызвать до создания первой страницы и сохранения шрифта со страницы на страницу.

Если вы хотите изменить текущий размер шрифта, проще вызвать SetFontSize ().

Примечание. Для стандартных шрифтов файлы метрики шрифта должны быть доступны. Для этого есть три возможности:

  • Они находятся в текущем каталоге (том, где работает скрипт)
  • Они находятся в одной из каталогов, определяемых параметром include_path
  • Они находятся в каталоге, определяемом константой K_PATH_FONTS

Онлайн конверторы шрифтов (для старых версий TCPDF*)

* В новой версии (на момент написании статьи август 2018 г использовал версию 6.2.25) всё проще:

Последняя версия TCPDF автоматически преобразует шрифты в формат TCPDF с использованием метода addTTFfont(). Старые шрифтовые программы и скрипты были удалены.

Например:

// convert TTF font to TCPDF format and store it on the fonts folder 
$fontname = $pdf->addTTFfont ('/path-to-font/FreeSerifItalic.ttf', 'TrueTypeUnicode', '', 96); // use the font 
$pdf->SetFont ($fontname, '', 14, '', false);

ПРИМЕЧАНИЕ. После того, как шрифт был преобразован, TCPDF больше не требует, чтобы TTF файл или вышеупомянутый вызов.

addTTFfont ()

** У меня не получилось сделать по примеру, что показан выше, я использовал такой код:

$path_to_ttf = $_SERVER["DOCUMENT_ROOT"] . '/tcpdf/fonts/arial/arial.ttf'; 
$fontname = TCPDF_FONTS::addTTFfont ($path_to_ttf , 'TrueTypeUnicode', '', 96);

Cкачать русский шрифт для TCPDF

P.S.: Если у вас что то пошло не так, (не поняли вышесказанного) - скачайте этот архив в нём содержимое папки fonts из моей рабочей TCPDF (я использую только Arial (обычный, жирный и курсивный)). В крайнем случае - пишите в Telegram (ник: first_Andres) - разберёмся.

Разное

1 пт (пункт) = 0.3527775 мм

Где ещё можно смотреть годную инфу

Как удобно работать с MultiCell ( ... )

MultiCell ($w (Ширина), $h(Высота),
    $txt (Текст), $border(Бордюр)= 0, $align (Выравнивание по гор.) = 'J', $fill (Цвет ячейки) = 0, $ln (куда след.) = 1, 
    $x (Горизонталь) = '', $y (Вертикаль) = '', $reseth (Сброс последней высоты ячейки) = true, $stretch (режим растяжения) = 0, 
    $ishtml (содержимое HTML) = false, $autopadding (Автозаполнение  - учет ширины линии) = true, $maxh (Максимальная высота) = 0,
    $valign (Выравнивание по верт.)='M', $fitcell (Подходящая ячейка) =false);

 

$reseth=false - Равняется по высоте предыдущей ячейки
$reseth=true - НЕ равняется по высоте предыдущей ячейки

ln (куда след.) = 0: вправо TAB
ln (куда след.) = 1: к началу следующей строки [ПО УМОЛЧАНИЮ] 
ln (куда след.) = 2:ниже Enter

Связаться с автором

Комментарии

Если у вас есть вопрос, критика или другое мнение - напишите в комментариях.