将在线网页生成pdf文档,目前自己找到比较合适的是wkhtmltopdf这个工具,之前好多年这个工具都没人进行维护,最近又开始维护,而且增加了目录显示,支持封面等多项功能,可算是能满足日常开发中遇到的绝大多数需求。
但是最近再用到封面目录等生成操作时候在windows环境之下执行相当成功,但是到了linux环境之下却变得不可执行,变成了命令不可识别,在这里贴上自己的生成命令:
wkhtmltopdf --outline --footer-right "[page] / [topage]" --footer-font-size 8 cover http://www.baidu.com toc --toc-header-text "目录" http://www.baidu.com /home/baidu.pdf;
在linux命令之下,单引号将剥夺其中的所有字符的特殊含义,而双引号中的
(
参
数
替
换
)
和
‘
(
命
令
替
换
)
是
例
外
,
两
者
基
本
上
没
有
什
么
区
别
,
除
非
在
内
容
中
遇
到
了
参
数
替
换
符
(参数替换)和`(命令替换)是例外,两者基本上没有什么区别,除非在内容中遇到了参数替换符
(参数替换)和‘(命令替换)是例外,两者基本上没有什么区别,除非在内容中遇到了参数替换符和命令替换符`。
所以因为双引号的缘故,"[page] / [topage]" 被剥夺了其命令层次的语义,所以已经不能被wkhtmltopdf这个软件所识别,亦或是wkhtmltopdf在linux下便不支持双引号,其官方只是简单说的是:
自己在这里也没有深究其原因,只是为了避免再次调用坑,所以在这里记录一下正确打开方式:
wkhtmltopdf --outline --footer-right [page]/[topage] --footer-font-size 8 cover http://www.baidu.com toc --toc-header-text 目录 http://www.baidu.com /home/baidu.pdf;
这样便可以生成正常的pdf报告了,包含页眉页脚,目录等,会有封面,样式方面也是高度还原。
效果图:
附加在线生成pdf的工具跟demo实现类(java),如果已安装了旧版本的wkhtmltopdf,通过yum -y remove wkhtmltox即可卸载老版本,通过yum localinstall wkhtmltopdf-xxxx.rpm安装以下包的新wkhtmltopdf工具:
点这下载