Перейти к основному содержимому

Экспорт в PDF

Статья относится к экспорту dhtmlxScheduler 4.1+. Если вы используете dhtmlxScheduler 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() для экспорта Scheduler:
<input value="Export to PDF" type="button" onclick='scheduler.exportToPDF()'/>

Связанные примеры​

Параметры метода экспорта​

Метод exportToPDF() принимает в качестве параметра объект с рядом свойств. Все свойства являются необязательными:

Вызов метода экспорта с опциональными свойствами​

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"
});

Имя выходного файла​

Чтобы задать произвольное имя выходного файла, используйте свойство name в параметре метода exportToPDF():

scheduler.exportToPDF({
name: "my_beautiful_scheduler.pdf"
});

Заголовок/нижний колонтитул выходного файла​

Чтобы добавить заголовок/нижний колонтитул к выходному PDF-файлу, используйте свойства header/footer в параметре метода exportToPDF():

примечание

Обратите внимание: при указании параметров можно использовать любой HTML. При указании изображений помните, что нужно задавать глобальные пути в значениях атрибута "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-ссылки. Если у вас CSS‑классы указаны во внутреннем/локальном окружении, вы можете встроить все стили следующим образом:

scheduler.exportToPDF({
header: "<style>.tier1{background: red; color:white;}</style>"
});

Экспорт HTML‑элементов​

При экспорте Scheduler в PDF‑формат учтите, что экспорт HTML‑элементов ограничен из‑за возможной небезопасности.

Существуют HTML‑элементы, которые не полностью допускаются для экспорта, например <canvas>, <svg>, <script> и изображения с атрибутом src, содержащим изображение в формате Base64. Однако существуют безопасные способы экспорта изображений в форматах SVG и Base64:

  • можно использовать элемент <img/> с атрибутом src, который содержит URL изображения в формате SVG (подходит для форматов PNG и JPG, не работает для Base64), например:
<img src="https://www.svgrepo.com/download/530597/hat.svg">
  • можно использовать элементы style, такие как background или background-image и указать атрибут 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‑атакам.

Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.