最近需要为自己在公司里负责的项目做一些文档管理,有几个方案 比如 纯 html 和 js 实现的 mdwiki,基于 php 实现的 doduwiki,还有之前也体验过的 leanote 服务,最后选择了 leanote ... 在导出文档为 pdf 时出现了点意外 ...
问题是这样的
正好刚刚整理了一个接口文档,需要导出并发送邮件给同事,第一个想起来的就是使用 leanote 自带的导出功能,把文稿导出为 pdf 文件。结果,悲催了,导出失败,没有任何下载提示。用管理员登录 leanote 的后台管理功能,查看系统中的配置和服务器上的命令都是存在的。
但就是无法导出文件!
问题排查
接下来回到自己的帐号,查看服务器上 leanote 运行日志,结果发现了下面这行
QXcbConnection: Could not connect to display
搜索了一下,原来是 wkhtmltopdf 需要使用 X window 的模式,有一个叫 xvfb 的工具,可以模拟一个假的 X window 以供软件执行。
我使用的是 Ubuntu 的服务器,与 Debian 系一致,安装命令如下
apt install -y xvfb
最后蚂蚁笔记后台中 导出 pdf
中配置的 wkhtmltopdf 路径设置为
xvfb-run /usr/bin/wkhtmltopdf
注意这里填写的命令实际上是 2 个,第一个是 xvfb-run 第二个才是 wkhtmltopdf
就行了
导出文件中的中文丢失
导出文件后,打开一看,又一次傻眼了,里面的中文都空白了,没有中文嵌入
搜索了一下原因,中文字体没有啊~ 再装个中文字体吧。
apt install xfonts-wqy
最后导出后的文件打开,正常了,就是效果,呵呵了,不忍直视的方块字!
行吧,我还是老老实实的把内容粘到本地,用 marked 导出吧。文档排版和字体效果好多了!
一顿操作~
附
安装 wkhtmltopdf
查看是否安装 wkhtmltopdf,可以 whereis wkhtmltopdf
或 apt search wkhtmltopdf
查看
ubuntu 中使用 apt 安装后,路径一般是 /usr/bin/wkhtmltopdf
更新 leanote 的 markdown 解析器更新 md2html.js
- leanote 安装目录下 public/libs/md2html 这个目录中
- 将原 md2html.js 备份
- 然后从 leanote 中下载新版的 md2html.js
cd "你的 leanote 安装目录/public/libs/md2html"
mv md2html.js md2html.js.old
wget http://leanote.com/public/libs/md2html/md2html.js