Сегодня поговорим действиями, как правильно настроить сервис ведения заметок 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
Почему-то при экспорте получаю ошибку
включил в .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
проходит на ура
Открываю через firefox
и
Содержимое pdf
не едет, как если бы это было по дефолту. Результат достигнут. Заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.