Сегодня поговорим действиями, как правильно настроить сервис ведения заметок BookStack на возможность экспорта содержимого в PDF дабы не ехало форматирование, не было сбоев и т. д.

Шаг №1: Сервис ведения заметок BookStack установлен на Ubuntu 18.04 Server по заметке.

Шаг №2: По умолчанию BookStack использует пакет DomPDF для экспорта страниц в PDF документы, но его возможности ограничены, а потому я буду использовать пакет wkhtmltopdf.

ekzorchik@srv-bionic:~$ ssh -l ekzorchik 172.33.33.105
ekzorchik@srv-bionic:~$ dpkg -l | grep wkhtmltopdf
ekzorchik@srv-bionic:~$ apt-cache search wkhtmltopdf
pandoc - general markup converter
python-django-wkhtmltopdf - Django module with views for HTML to PDF conversions (Python 2)
python-pdfkit - Python wrapper for wkhtmltopdf to convert HTML to PDF (Python 2)
python3-django-wkhtmltopdf - Django module with views for HTML to PDF conversions (Python 3)
python3-pdfkit - Python wrapper for wkhtmltopdf to convert HTML to PDF (Python 3)
wkhtmltopdf - Command line utilities to convert html to pdf or image using WebKit
ekzorchik@srv-bionic:~$
ekzorchik@srv-bionic:~$ sudo apt-get install -y wkhtmltopdf
ekzorchik@srv-bionic:~$ whereis wkhtmltopdf
wkhtmltopdf: /usr/bin/wkhtmltopdf /usr/share/man/man1/wkhtmltopdf.1.gz
ekzorchik@srv-bionic:~$
ekzorchik@srv-bionic:~$ sudo nano /var/www/html/bookstack/.env
APP_KEY=base64:0h+WwePQ23RaqstRH29DMkd9ziEWvYR8T9/wDAQO/34=
DB_HOST=localhost
DB_DATABASE=db_bookstack
DB_USERNAME=us_bookstack
DB_PASSWORD=612mbddr@
MAIL_DRIVER=smtp
MAIL_FROM_NAME=BookStack
MAIL_FROM=bookstack@example.com
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
WKHTMLTOPDF=/usr/bin/wkhtmltopdf
ekzorchik@srv-bionic:~$ sudo systemctl restart apache2

Почему-то при экспорте получаю ошибку

При настроенном wkhtmltopdf получаю ошибку если экспортирую страницу в PDF

включил в .env APP_DEBUG=true

ekzorchik@srv-bionic:~$ sudo nano /var/www/html/bookstack/.env
APP_KEY=base64:0h+WwePQ23RaqstRH29DMkd9ziEWvYR8T9/wDAQO/34=
DB_HOST=localhost
DB_DATABASE=db_bookstack
DB_USERNAME=us_bookstack
DB_PASSWORD=612mbddr@
MAIL_DRIVER=smtp
MAIL_FROM_NAME=BookStack
MAIL_FROM=bookstack@example.com
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
WKHTMLTOPDF=/usr/bin/wkhtmltopdf
APP_DEBUG=true
ekzorchik@srv-bionic:~$ sudo systemctl restart apache2

после вижу на той странице выше где ошибка после нажатия клавиши F5 — подробное описание ошибки.

Подробное описание ошибки

Смотрю какие пакеты рекомендуются чтобы были в системе после того, как установлен пакет wkhtmltopdf:

ekzorchik@srv-bionic:~$ dpkg -s wkhtmltopdf

Package: wkhtmltopdf

Status: install ok installed

Priority: optional

Section: utils

Installed-Size: 951

Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>

Architecture: amd64

Version: 0.12.4-1

Depends: libc6 (>= 2.14), libgcc1 (>= 1:3.0), libqt5core5a (>= 5.9.0~beta), libqt5gui5 (>= 5.2.0), libqt5network5 (>= 5.0.2), libqt5printsupport5 (>= 5.2.0), libqt5svg5 (>= 5.6.0~beta), libqt5webkit5 (>= 5.6.0~rc), libqt5widgets5 (>= 5.0.2), libstdc++6 (>= 5)

Recommends: xserver | xvfb

Description: Command line utilities to convert html to pdf or image using WebKit

wkhtmltopdf is a command line program which permits one to create a

pdf or an image from an url, a local html file or stdin. It produces a pdf or

an image like rendered with the WebKit engine.

.

This program requires an X11 server to run.

.

It is not built against a forked version of Qt hence some options are not

supported.

Original-Maintainer: Emmanuel Bouthenot <kolter@debian.org>

Homepage: https://wkhtmltopdf.org/

Проверяю, а установлен ли пакет xvfb:

ekzorchik@srv-bionic:~$ dpkg --get-selections | grep xvfb

ekzorchik@srv-bionic:~$ xvfb-run

Command 'xvfb-run' not found, but can be installed with:

sudo apt install xvfb

Устанавливаю пакет xvfb:

ekzorchik@srv-bionic:~$ sudo apt-get install -y xvfb

ekzorchik@srv-bionic:~$ sudo nano /var/www/html/bookstack/.env

APP_KEY=base64:0h+WwePQ23RaqstRH29DMkd9ziEWvYR8T9/wDAQO/34=

DB_HOST=localhost

DB_DATABASE=db_bookstack

DB_USERNAME=us_bookstack

DB_PASSWORD=612mbddr@

MAIL_DRIVER=smtp

MAIL_FROM_NAME=BookStack

MAIL_FROM=bookstack@example.com

MAIL_HOST=localhost

MAIL_PORT=1025

MAIL_USERNAME=null

MAIL_PASSWORD=null

MAIL_ENCRYPTION=null

WKHTMLTOPDF=/usr/bin/wkhtmltopdf

APP_DEBUG=true

ekzorchik@srv-bionic:~$ sudo systemctl restart apache2

Удаляю установленный из дефолтных репозитариев Ubuntu 18.04 Server пакет wkhtmltopdf версии 0.12.4-1:

ekzorchik@srv-bionic:~$ sudo apt-get remove -y wkhtmltopdf

Устанавливаю самую последнюю версию с сайта разработчика:

ekzorchik@srv-bionic:~$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb

ekzorchik@srv-bionic:~$ sudo apt-get install -y fontconfig libxrender1 xfonts-75dpi xfonts-base

ekzorchik@srv-bionic:~$ sudo dpkg -i wkhtmltox_0.12.6-1.bionic_amd64.deb

ekzorchik@srv-bionic:~$ sudo systemctl restart apache2

и после экспорт в pdf проходит на ура

Экспорт и открытие pdf файла через браузер Mozilla Firefox

Открываю через firefox и

Содержимое PDF документа отлично открывается в браузере Mozilla Firefox

Содержимое pdf не едет, как если бы это было по дефолту. Результат достигнут. Заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.