Рубрики
Uncategorized

Начальные знания о wkhtmltopdf

Автор оригинала: David Wong.

фон

Недавно был получен запрос клиента на экспорт формы анализа результатов экзамена студента и диаграммы в PDF. В таблице используется общая таблица, а диаграмма ссылается на https://www.chartjs.org/возникшие проблемы. Подробнее см. диаграмму wkhtmltopdf js.

размышляющий

После проверки в Интернете как передняя, так и задняя части могут создавать PDF-файлы из html. Учитывая эффект и эффективность реализации, окончательное решение заключается в использовании PHP для завершения работы по преобразованию на стороне сервера. В соответствии с принципом, что лучше не устанавливать дополнительное программное обеспечение, после поиска мы попробовали TCPDF PDF FPDF HTML2PDF и так далее. Однако существует большой разрыв между результатами и ожиданиями. Наконец, вы должны попробовать wkhtmltopdf, который требует дополнительной установки.

Введение в wkhtmltopdf

Wkhtmltopdf является одним из инструментов wkhtmltox, а другой-wkhtmltoimage. Это инструменты командной строки с открытым исходным кодом (LGPLv3), которые используют механизм рендеринга Qt WebKit для рендеринга HTML в PDF и различные форматы изображений. Им не нужно отображать или отображать услуги. Стоит отметить, что Google Chrome также использует движок рендеринга Qt WebKit.

Установка Wkhtmltopdf

Установка выполняется в docker с использованием docker проекта с открытым исходным кодом-lnmp. Но PHP использует версию alpine, а затем изменяет изображение обратно на версию Debian по умолчанию. Поскольку клиент использует centos, он загружает изображение CentOS 7 отдельно.

Установка Debian

# wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox_0.12.5-1.jessie_amd64.deb
# dpkg -i wkhtmltox_0.12.5-1.jessie_amd64.deb

Установка здесь приведет к отсутствию информации о зависимостях, и другая информация может быть установлена непосредственно через apt-get install, но эти два необходимо отметить:

dpkg: dependency problems prevent configuration of wkhtmltox:
 wkhtmltox depends on libpng12-0; however:
  Package libpng12-0 is not installed.
 wkhtmltox depends on libssl1.0.0; however:
  Package libssl1.0.0 is not installed.

Эти два пакета отправляются непосредственно на склад для поиска установки, а затем снова выполняют команду установки, и установка будет успешной.

# dpkg -i wkhtmltox_0.12.5-1.jessie_amd64.deb
# wkhtmltopdf -V
# wkhtmltopdf --enable-forms  https://www.baidu.com baidu.pdf

Установка CentOS

# wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
# rpm -ivh wkhtmltox-0.12.5-1.centos7.x86_64.rpm

Информация об отсутствии зависимостей будет запрошена после установки и обновления обычной системы:

error: Failed dependencies:
    fontconfig is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    freetype is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    libpng is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    libjpeg is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    libX11 is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    libXext is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    libXrender is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    xorg-x11-fonts-Type1 is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    xorg-x11-fonts-75dpi is needed by wkhtmltox-1:0.12.2.1-1.x86_64

Просто следуйте инструкциям по установке пакета здесь.

# yum install fontconfig freetype libpng libjpeg libX11 libXext libXrender xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi

Просто следуйте инструкциям по установке пакета здесь.

# rpm -ivh wkhtmltox-0.12.5-1.centos7.x86_64.rpm
# wkhtmltopdf -V
# wkhtmltopdf --enable-forms https://www.baidu.com baidu.pdf

Проблема с Wkhtmltopdf

Важно отметить, что некоторые системы могут создавать исключения. QXcbConnection: Не удалось подключиться к прерванному отображению (сброс ядра) Здесь вам нужно установить xvfb и запустить его с помощью xvfb

# xvfb-run wkhtmltopdf --enable-forms https://www.baidu.com baidu.pdf

Экспортированный китайский PDF-файл будет зашифрован. Вы можете скопировать шрифт в шрифтах в каталоге system32 системного диска Windows C и запустить его снова в/usr/share/шрифты linux .

Wkhtmltopdf является кроссплатформенным программным обеспечением и не имеет ничего общего с языком, используемым в серверной части. PHP имеет фреймворки, доступные напрямую https://github.com/KnpLabs/snappy и фреймворки laravel https://github.com/barryvdh/laravel-snappy Конечно, использование PHP непосредственно для выполнения оболочки также очень просто, но обратите внимание на защиту от веб-оболочки.

Оригинал: “https://developpaper.com/initial-knowledge-of-wkhtmltopdf/”