printPdf. Создания pdf файла из страницы.

Компонент для создания pdf файла из содержимого страницы.



Сниппет printPdf


[[printPdf?
    $container=`printPdf`
    $filename=`printPdf - Заказ успешно создан`
    $text=`Распечатать заказ`
    $title=`Жмакни меня`
    $hide=`0`
    $class=`string`
    $color=`007bff`
    $mode=`default`
]]
Fenom:
{'printPdf' | snippet: [
    'container' => '.printPdf',
    'filename' => 'printPdf - Заказ успешно создан',
    'text' => 'Распечатать заказ',
    'title' => 'Жмакни меня',
    'hide' => 0,
    'class' => 'string',
    'color' => '007bff',
    'mode' => 'default'
]}

Параметры сниппета:


Параметры сниппета
Имя Описание По умолчанию
tpl Шаблон кнопки. Обязателен атрибут id = printPdf. printPdf
title Тайтл кнопки Скачать PDF
text Текст кнопки
hide Видимость кнопки при печати. Доступные варианты: auto||1||0 auto
container Контейнер печати body
orientation Ориентация бумаги. Возможные значения: auto||portrait||landscape auto
format Формат бумаги. Возможные значения: a0||a1||a2||a3||a4||a5||a6||auto auto
filename Название создаваемого файла print
class Классы для кнопки. Класс string меняет стилизацию кнопки на строковую.
mode Режим печати. Возможные значения: default||page default
compress Cжатие создаваемого файла false
color Цвет текста и иконки печати 000000
jquery Подключение на сайт jQuery 3.4.0. 0

*Существует 2 режима печати:

  1. Default. Обычная печать, но существует ограничение по кол-ву страниц ~ 6. Не умеет разделять страницы.
  2. Page. Постраничная печать. Разделяет каждый контейнер на отдельную страницу. Ограничений нет, но не умеет сохранять ссылки — аналогично обычному скриншоту.

Полезные ссылки:


Демо сайт
Modstore
Aleksandr Huz
22 апреля 2019, 13:05
modx.pro
3
530
+6
Поблагодарить автора Отправить деньги

Комментарии: 15

Игорь Гришанов
22 апреля 2019, 14:07
0
а чем он лучше PDFResource?
    Aleksandr Huz
    22 апреля 2019, 20:10
    0
    Я не знаком с PDFResource, но судя по описанию, то pdf генерируется на сервере, нужно создавать чанки и прописывать настройки. А мой компонент работает на клиентской стороне, и нужно всего-лишь вызвать сниппет.
Николай Савин
22 апреля 2019, 16:54
0
Кто рендерит pdf? Браузер или сервер? Возможно ли сохранение скриншота заказа через API?
    Aleksandr Huz
    22 апреля 2019, 19:50
    0
    Браузер
    Aleksandr Huz
    23 апреля 2019, 12:40
    0
    В след. обновлении добавлю API. Спасибо за идею.
Фарит
22 апреля 2019, 23:28
0
С каким качеством создается файл? Как-то можно на это повлиять?
Растр или вектор?
Если растр, то можно хотя бы в 600 дпи сохранять?
    Aleksandr Huz
    23 апреля 2019, 12:40
    0
    192 dpi. Растр. В следующем обновлении добавлю возможность увеличивать качество.
Сергей
23 апреля 2019, 16:45
0
А есть ли возможность сохранения файла в указанную папку (через настройку) на сервере?
    Фарит
    23 апреля 2019, 23:44
    0
    затем получить имя и путь и засунуть в минишоп?
      Сергей
      24 апреля 2019, 10:58
      0
      Да не, мне для других дел. Внедрить в калькулятор расчета, чтобы он расчет сохранял.
    Aleksandr Huz
    24 апреля 2019, 09:54
    +1
    Такой возможности нет. Возможно вам подойдет компонент ExportPage
      Сергей
      24 апреля 2019, 10:58
      0
      Спасибо за ответ.
Eugene Generalov
25 апреля 2019, 23:10
0
Я так понял компонент работает на основе плагина html2canvas. Т.е для печати страницы она должна быть открыта. По ссылке он печатать не умеет? Если передать просто ссылку
Иван Кизименко
18 июля 2019, 00:35
0
чтобы дробить на страницы есть
<div class="html2pdf__page-break"></div>
Взято отсюда: https://www.npmjs.com/package/html2pdf.js/v/0.9.0
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
15