Есть календарь, который нужно вывести в pdf. Делаю я это так:
define('WIDTH', 7);
define('HEIGHT', 7);
define('WIDTH_MONTH', 50);
define('X_POSITION', 10);
$pdf= new FPDF('L', 'mm', 'A4');
$pdf->SetTitle($showgroup['name']);
$pdf->SetFont('Helvetica');
$pdf->AddPage('L');
$pdf->SetXY(100, 15);
// $pdf->SetDrawColor(50,60,100);
$pdf->Cell(100, 10, $showgroup['name'], 0, 0, 'C', 0);
$y = 30;
foreach ($showgroup_types as $type) {
$pdf->SetXY(10, $y);
list($r, $g, $b) = sscanf($type['color'], "#%02x%02x%02x");
$pdf->Cell(40, 7, $type['name'], 1, 0, 'C', 0);
$pdf->SetFillColor($r, $g, $b);
$pdf->Cell(10, 7, '', 1, 0, 'C', 1);
$y += HEIGHT;
}
$y += HEIGHT;
for ($month = 1; $month <= 12; $month++) {
//дни недели
$pdf->SetXY(10, $y);
$i = 1;
$x = X_POSITION + WIDTH_MONTH;
foreach ($day_of_week[$month] as $day) {
$pdf->SetFontSize(8);
$pdf->SetXY($x, $y);
$pdf->Cell(WIDTH, HEIGHT, $day, 1, 0, 'C', 0);
$x += WIDTH;
$i++;
}
$y += HEIGHT;
$pdf->SetFontSize(12);
$pdf->SetXY(10, $y);
$pdf->Cell(WIDTH_MONTH, HEIGHT, $month_names[$month], 1, 0, 'C', 0);
$i = 1;
$x = X_POSITION + WIDTH_MONTH;
for ($day = 1; $day <= $days_in_month[$month]; $day++) {
$pdf->SetFontSize(12);
$pdf->SetXY($x, $y);
$pdf->Cell(WIDTH, HEIGHT, $day, 1, 0, 'C', 0);
$x += WIDTH;
$i++;
}
$y += HEIGHT;
foreach ($showgroup_users as $user) {
$x = X_POSITION;
$pdf->SetFontSize(12);
$pdf->SetXY($x, $y);
$pdf->Cell(WIDTH_MONTH, HEIGHT, $user['name'], 1, 0, 'C', 0);
$x = X_POSITION + WIDTH_MONTH;
for ($day = 1; $day <= $days_in_month[$month]; $day++) {
if ($calendar_schedules[$month][$day][(int)$user['id']]['type_id']) {
$pdf->SetXY($x, $y);
list($r, $g, $b) = sscanf($types[$calendar_schedules[$month][$day][(int)$user['id']]['type_id']], "%02x%02x%02x");
$pdf->SetFillColor($r, $g, $b);
$pdf->Cell(WIDTH, HEIGHT, "", 1, 0, 'C', 1);
} else {
$pdf->Cell(WIDTH, HEIGHT, '', 1, 0, 'C', 0);
}
$x += WIDTH;
}
$y += HEIGHT;
}
$y += HEIGHT;
}
$pdf->Output($showgroup['name'] . '.pdf', 'I');
но есть небольшая проблема - когда доходит до следующей страницы то у меня каждая строка начинается сверху новой страницы, то есть со второй страницы на каждой странице выводится только одна строка из таблицы. Как можно это исправить. Можно конечно задать позицию по высоте и на каждой итерации проверять не достигнута ли она, но может есть способ проще?
И ещё одна проблема - единицы измерения миллиметры, формат А4, но когда я вывожу переменную $y то оказывается что его значение на новой странице меньше 210
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости