Экспорт в PDF (версия 4.0)

Эта статья описывает экспорт в dhtmlxScheduler версии 4.0 и более ранних. Для версий 4.1 и выше смотрите подробности здесь.

Начиная с версии 4.1, dhtmlxScheduler внедрил новый способ экспорта расписания в PDF — онлайн сервис экспорта.

Установка

Доступны пакеты для различных платформ:

Related sample:  Export to PDF [Legacy]

Необходимые подключения

Чтобы включить экспорт в PDF на странице расписания, активируйте соответствующее расширение:

scheduler.plugins({
    pdf: true
});

Запуск экспорта

Для экспорта данных расписания в PDF добавьте кнопку, которая вызывает метод toPDF(). Этот метод требует URL ранее установленного скрипта:

<input type="button" name="save" value="save" 
onclick="scheduler.toPDF('path/to/folder/generate.php')" 
style="right:300px; width:80px; position:absolute; top:1px;">

Настройка сервиса

Настройка параметров экспорта требует изменений как на клиентской, так и на серверной стороне.

Клиентская сторона

Метод toPDF() активирует процесс экспорта:

scheduler.toPDF(path, color, header, footer);

Параметры:

  • path - (url) URL, указывающий на PHP-файл, отвечающий за генерацию PDF. Подробнее ниже.
  • color - ('color', 'gray', 'bw', 'custom', 'fullcolor') определяет цветовую схему:
    • 'color' — полноцветный (по умолчанию).
    • 'gray' — градации серого.
    • 'bw' — только черно-белый.
    • 'custom' — позволяет задать свою цветовую карту (требует доработки PHP, см. ниже).
    • 'fullcolor' — используются реальные цвета фона и текста из расписания.
  • header - (boolean, необязательно) — добавлять ли шапку на страницу. По умолчанию — false. Подробнее ниже.
  • footer - (boolean, необязательно) — добавлять ли подвал на страницу. По умолчанию — false. Подробнее ниже.

Например, добавление этой строки на HTML-страницу вызовет toPDF() с серой цветовой схемой:

scheduler.toPDF('path/to/folder/generate.php','gray');

Серверная сторона

Файл generate.php (указан выше) обрабатывает параметры экспорта.

Минимальный пример выглядит так:

$scPDF = new schedulerPDF();
$scPDF->printScheduler($xml);

Перед вызовом printScheduler() можно применить различные пользовательские настройки:

Размеры элементов:

// высота заголовка дня в месячном представлении
$scPDF->monthDayHeaderHeight = 6;
// высота заголовка месяца
$scPDF->monthHeaderHeight = 8;
// высота контейнера с названием месяца в годовом представлении
$scPDF->yearMonthHeaderHeight = 8;
// высота строки в представлении agenda
$scPDF->agendaRowHeight = 6;
// высота заголовка в дневном и недельном представлениях
$scPDF->dayTopHeight = 6;
// ширина левой шкалы в дневном и недельном представлениях
$scPDF->dayLeftWidth = 16;

Размер шрифта:

// настройки размера шрифта
$scPDF->monthHeaderFontSize = 9;
$scPDF->monthDayHeaderFontSize = 8;
$scPDF->monthEventFontSize = 7;
$scPDF->yearHeaderFontSize = 8;
$scPDF->yearFontSize = 8;
$scPDF->agendaFontSize = 8;
$scPDF->dayHeaderFontSize = 7;
$scPDF->dayScaleFontSize = 8;
$scPDF->dayEventHeaderFontSize = 7;
$scPDF->dayEventBodyFontSize = 7;
$scPDF->todayFontSize = 11;

Пользовательские цвета (используйте 'custom' как имя цветовой карты на клиенте):

$scPDF->lineColor = '586A7E';
$scPDF->bgColor = 'C2D5FC';
$scPDF->dayHeaderColor = 'EBEFF4';
$scPDF->dayBodyColor = 'FFFFFF';
$scPDF->dayHeaderColorInactive = 'E2E3E6';
$scPDF->dayBodyColorInactive = 'ECECEC';
$scPDF->headerTextColor = '2F3A48';
$scPDF->textColor = '2F3A48';
$scPDF->eventTextColor = '887A2E';
$scPDF->eventBorderColor = 'B7A543';
$scPDF->eventColor = 'FFE763';
$scPDF->todayTextColor = '000000';
$scPDF->scaleColorOne = 'FCFEFC';
$scPDF->scaleColorTwo = 'DCE6F4';
$scPDF->yearDayColor = 'EBEFF4';
$scPDF->yearDayColorInactive = 'd6d6d6';

Шапки и подвал:

// высота шапки
$scPDF->headerImgHeight = 40;
// высота подвала
$scPDF->footerImgHeight = 40;
// путь к изображению шапки
$scPDF->headerImg = './header.png';
// путь к изображению подвала
$scPDF->footerImg = './footer.png';

Шапка и подвал

Пользовательские шапки и подвал можно добавить на каждую страницу следующим образом:

  • Подготовьте изображения с именами "header.png" и "footer.png".
  • Поместите эти изображения в ту же папку, что и generate.php.
  • На клиентской стороне обновите вызов toPDF() следующим образом:
scheduler.toPDF(url, "color", true, true);

Это добавит "header.png" и "footer.png" как шапку и подвал на каждой странице сгенерированного PDF.

Сообщения об ошибках

Если генерация PDF завершилась неудачей, будет создан файл с именем "error_report_xxxx.xml". Пожалуйста, приложите этот файл при сообщении об ошибках.

Если вывод не завершился ошибкой, но есть проблемы, можно включить режим отладки в generate.php, изменив:

$debug = false;

на

$debug = true;

Это создаст файл "debug_xxxxx.xml", который также следует приложить к сообщению об ошибке.

Наверх