Экспорт в PDF
В этой статье рассматривается экспорт с помощью dhtmlxScheduler версии 4.1 и выше. Для версий 4.0 и ранее, пожалуйста, обратитесь к этому руководству.
Начиная с версии 4.1, dhtmlxScheduler предоставляет новый способ экспорта планировщика в PDF-файл с помощью онлайн-сервиса экспорта.
Сервис является бесплатным, однако PDF-файлы, созданные под лицензией GPL, будут содержать водяной знак библиотеки. Покупка лицензии удаляет водяной знак в течение активного периода поддержки (12 месяцев для всех PRO-лицензий).
Использование сервисов экспорта
Доступно несколько сервисов экспорта, которые можно ус тановить локально для экспорта Scheduler в PDF.
Имейте в виду, что сервисы экспорта являются отдельными от пакета Scheduler. Для получения информации об условиях использования ознакомьтесь с соответствующей статьей.
Ограничения на размер запроса
API-эндпоинт https://export.dhtmlx.com/scheduler обрабатывает запросы на экспорт (exportToPDF, exportToPNG и др.). Максимально допустимый размер запроса - 10 МБ.
Экспорт по умолчанию в PDF
Чтобы экспортировать планировщик в PDF, выполните следующие шаги:
- Включите плагин export_api с помощью метода plugins:
scheduler.plugins({
export_api: true
});
Для версий Scheduler ниже 7.0, подключите скрипт https://export.dhtmlx.com/scheduler/api.js на вашей странице для активации онлайн-сервиса экспорта, например:
<script src="codebase/dhtmlxscheduler.js"></script>
<script src="https://export.dhtmlx.com/scheduler/api.js"></script>
- Используйте метод exportToPDF для выполнения экспорта:
<input value="Export to PDF" type="button" onclick='scheduler.exportToPDF()'/>/*!*/
Параметры метода экспорта
Метод exportToPDF() принимает необязательный объект с различными свойствами:
| name | (string) имя файла для экспортируемого PDF |
| format | ('A0', 'A1', 'A2', 'A3', 'A4', 'A5') размер бумаги для PDF |
| orientation | ('portrait', 'landscape') ориентация страниц PDF |
| zoom | (number) уровень масштабирования PDF |
| header | (string) HTML-контент для включения в заголовок PDF |
| footer | (string) HTML-контент для включения в подвал PDF |
| server | (string) URL API-эндпоинта для запросов на экспорт. Полезно при использовании локального сервиса экспорта. По умолчанию https://export.dhtmlx.com/scheduler |
| additional_settings | (object) дополнительные параметры экспорта, включая:
|
scheduler.exportToPDF({
name:"myscheduler.pdf",
format:"A4",
orientation:"portrait",
zoom:1,
header:"<h1>My company</h1>",
footer:"<h4>Bottom line</h4>",
server:"https://myapp.com/myexport/scheduler"
});
Имя выходного файла
Чтобы указать индивидуальное имя для экспортируемого PDF-файла, используйте свойство name в опциях exportToPDF:
scheduler.exportToPDF({
name:"my_beautiful_scheduler.pdf"/*!*/
});
Заголовок/подвал выходного файла
Заголовки и подвал можно добавить в экспортируемый PDF с помощью свойств header и footer в опциях exportToPDF:
В этих свойствах можно использовать любой HTML. При добавлении изображений указывайте абсолютные URL в атрибуте "src".
scheduler.exportToPDF({
name:"myscheduler.pdf",
header:"<h1>My company</h1>",/*!*/
footer:"<h4>Bottom line</h4>"/*!*/
});
Пользовательские стили для выходного файла
Пользовательские стили можно применить, подключив таблицу стилей с вашими CSS-классами:
- Через ссылку на внешний файл стилей:
scheduler.exportToPDF({
name:"calendar.pdf",
header:'<link rel="stylesheet" href="http://mysite.com/custom.css">' /*!*/
});
- Или встроив стили в тег
<style>:
scheduler.exportToPDF({
name:"calendar.pdf",
header:'<style>... custom css classes here ...</style>' /*!*/
});
Обратите внимание, что этот подход работает с общедоступными HTTP-URL. Для локальных или корпоративных сред вы можете встроить все стили напрямую, например:
scheduler.exportToPDF({
header:"<style>.tier1{background: red; color:white;}</style>"
});
Экспорт HTML-элементов
При экспорте Scheduler в PDF существуют некоторые ограничения по поддержке HTML-элементов из соображений безопасности.
Некоторые элементы, такие как <canvas>, <svg>, <script>, а также изображения с Base64-кодированным src, не поддерживаются полностью. Однако есть безопасные альтернативы для экспорта изображений в SVG и Base64-форматах:
- Используйте тег
<img/>с атрибутом src, указывающим на URL SVG-изображения (работает для экспорта в PNG и JPG, но не с Base64), например:
<img src="https://www.svgrepo.com/download/530597/hat.svg">
- Используйте CSS-стили, такие как background или background-image с
url(), указывающим на URL изображения или строку Base64 (работает для PNG, JPG и SVG):
.red {
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH1ggDCwMADQ4NnwAAAFVJREFUGJWNkMEJADEIBEcbSDkXUnfSgnBVeZ8LSAjiwjyEQXSFEIcHGP9oAi+H0Bymgx9MhxbFdZE2a0s9kTZdw01ZhhYkABSwgmf1Z6r1SNyfFf4BZ+ZUExcNUQUAAAAASUVORK5CYII=") 100%/contain no-repeat;
display: inline-block;
width: 32px;
height: 32px;
}
Если у вас есть собственный модуль экспорта и требуется экспортировать не поддерживаемые HTML-элементы, вы можете обратиться в службу поддержки за рекомендациями по модификации модуля для обхода ограничений. Помните, что это может привести к уязвимости вашего сервера для XSS-атак.