wkhtmltopdf 在使用时,页脚要显示中文,字体设置读取不出
发布网友
发布时间:2022-04-23 12:44
我来回答
共1个回答
热心网友
时间:2023-09-26 10:21
安装wkhtmltopdf
# apt-get install wkhtmltopdf
从HTML生成PDF文件的基本语法如下:
# wkhtmltopdf input-file output-file
我们可以从任何网页生成PDF:
# wkhtmltopdf example.com example.pdf
或从本地html文件:
# wkhtmltopdf example.html example.pdf
以上命令只能在Linux box 图形环境中使用。如果我们在一个VPS或专用服务器上生成PDF,如果我们执行该命令,我们将得到从下错误:
wkhtmltopdf: cannot connect to X server
为了解决这个问题,我们需要使用一个名为 xvfb 的工具。
Xvfb是一个 X 服务器,能够运行在没有显示硬件和没有物理输入设备的机器上。它使用虚拟内存来模拟一个mb framebuffer。
回到顶部
安装 xvfb
# apt-get install xvfb
接下来,我们需要创建一个shell脚本:
xvfb-run --server-args="-screen 0, 1024x768x24" /usr/bin/wkhtmltopdf $*
然后将它保存在 /usr/bin/wkhtmltopdf.sh 下
下一步,我们将创建一个 symbolic 链接,这样我们就可以执行脚本而不用编写的完整路径:
# ln -s /usr/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf2
让我们尝试执行shell脚本,并看看会发生什么。
# wkhtmltopdf2 example.com example.pdf
Loading page (1/2)
Printing pages (2/2)
Done
好,如果能够正确运行。就可以用以下自定义PHP脚本来生成一个PDF文件。
//Turn on output buffering
ob_start();
echo "<html>";
echo "<head>";
echo "<link href='http://example.com/style.css' rel='stylesheet' type='text/css'>";
echo "</head>";
echo "<body>";
echo "<p>custom HTML to PDF report</p>";
echo "</body>";
echo "</html>";
//return the contents of the output buffer
$html = ob_get_contents();
$filename = date('YmdHis');
//save the html page in tmp folder
file_put_contents("/tmp/{$filename}.html", $html);
//Clean the output buffer and turn off output buffering
ob_end_clean();
//convert HTML to PDF
shell_exec("wkhtmltopdf2 -q /tmp/{$filename}.html /tmp/{$filename}.pdf");
if(file_exists("/tmp/{$filename}.pdf")){
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename='{$filename}.pdf'");
echo file_get_contents("/tmp/{$filename}.pdf");
}else{
exit;
}追问这个只是基本的使用方法,我碰到的是具体的页脚要显示中文问题。