跳到主內容

BookStack 匯出成PDF檔

BUBU 在測試的時候發現到會出中文會出現亂碼還有可能匯出來會是空白的,後來去看官方文檔發現到官方有建議使用另一個方式來匯出成PDF檔。 建議的軟體是 wkhtmltopdf 來使用設定方式如下:

109.04.11 有群友提醒字型檔有可能會有版權問題,建議改用開源的版本來使用,以免誤碰到版權的爭議

第一步:先設定中文字型

  1. 字型改採用開源式的字型,是 「 Google Noto Fonts 」 所提供的字型,下載路徑如下 Noto Sans Traditional Chinese,或者從本站附件裡下載該字型

  2. /usr/share/fonts 的目錄,在此目錄下新增一個 chinese 目錄。

mkdir -p /usr/share/fonts/chinese
  1. 使用WinSCP將剛剛取出來的中文字型檔上傳到剛剛新建的目錄下面。

  2. 接下來需要安裝 ttmkfdir 來搜尋目錄中所有的字型資訊,並彙總生成 fonts.scale 文件。

  • CentOS 7
yum install ttmkfdir -y
  • CentOS 8
dnf install ttmkfdir -y
  • 以下是安裝成功的畫面

BS-PDF-02.png

  • 然後用 ttmkfdir 命令執行
ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir

如果您系統是 Debian\Ubuntu 的話以上的指令都不需要安裝只要直接用下面的步驟

  • 最後一步就是修改字型配置文件了,首先通過編輯器開啟配置文件:
vim /etc/fonts/fonts.conf
  • 新增 chinese 目錄
mkdir /usr/share/fonts/chinese 
  • 新增完目錄,請用 WinSCP 方式將字型檔上傳到此目前 chinese

  • 可以看到一個 Font directory list ,即字型列表,在這裡需要把我們新增的中文字體位置加進去:

<dir>/usr/share/fonts/chinese</dir>

BS-PDF-03.png

  • 然後輸入 :wq 儲存退出,最後別忘了重新整理記憶體中的字型快取,這樣就不用 reboot 重啟了
fc-cache
  • 如果系統是 Debian\Ubuntu 無法執行 fc-cache 此指令需安裝 fontconfig 套件
apt install fontconfig
  • 這樣所有的步驟就算完成了,最後再次通過 fc-list 看一下字型列表:

bsfont-01.png

第二步:開始安裝 wkhtmltopdf 此套件

  1. 安裝完之後在去官方下載新最版本的套件來使用。由於BUBU的系統環境是 CentOS 的版本,看網友們是使用什麼版本的系統就下載那一個就可以了。

BS-PDF-05.png

  1. 下載之前要先將此套件必要套件先安裝,然後再下載此套件並且安裝,安裝時會出現錯無法安裝

109.09.22 官方已有更新套件,並且修改載點

  • CentOS 7
yum install -y libpng libjpeg openssl icu libX11 libXext libXrender xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos7.x86_64.rpm
rpm -Uvh wkhtmltox-0.12.6-1.centos7.x86_64.rpm
  • CentOS 8
dnf install -y libpng libjpeg openssl icu libX11 libXext libXrender xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos8.x86_64.rpm
rpm -Uvh wkhtmltox-0.12.6-1.centos8.x86_64.rpm
  • Debian 10
apt install xfonts-75dpi -y
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_amd64.deb
dpkg -i wkhtmltox_0.12.6-1.buster_amd64.deb
apt -f install
  • Debian 11
apt install xfonts-75dpi -y
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.bullseye_amd64.deb
dpkg -i wkhtmltox_0.12.6.1-2.bullseye_amd64.deb
apt -f install
  • Debian 12
apt install xfonts-75dpi libxext6 libxrender1 xfonts-base -y
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
dpkg -i wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
apt -f install
  1. 再來進到BookSack目裡下的 .env 新增加套件的服務。
# In .env file

WKHTMLTOPDF=/usr/local/bin/wkhtmltopdf #這是 BUBU 系統所安裝的路徑

#由於 wkhtmltopdf 該服務套件每個系統所安裝的路徑是不一樣的,所以在設定時要指定到對的位子服務會正常運行

# 官方在 BookStack 21.08 因安全性問題需要在 .env 檔加以下這一段參數才正常啟動匯出功能
ALLOW_UNTRUSTED_SERVER_FETCHING=true
  1. 安裝完之後,再到自己頁面就可以正常匯出使用了。



參考相關網頁