我一直在使用wkthmltopdf在我的linux网络服务器上即时将html转换为pdf文件。该程序最初需要X11或类似的X服务器才能正常运行,但是由于开发人员要求在没有GUI的服务器上运行该程序,我很确定它在static version中运行虚拟X服务器。我一直在使用程序的静态(独立)版本,它工作得很好!我将可执行文件放在一个文件夹中,然后运行:
./wkhtmltopdf file1.html file2.pdf
但是我想在系统范围内安装这个程序。我使用了apt-get install wkhtmltopdf
(昨天刚刚安装),因为我在64位系统上运行,我还需要apt-get install ia32-libs
。安装后我可以找到这样的版本:
wkhtmltopdf --version
输出:
Name:
wkhtmltopdf 0.9.9
License:
Copyright (C) 2008,2009 Wkhtmltopdf Authors.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO
WARRANTY, to the extent permitted by law.
Authors:
Written by Jakob Truelsen. Patches by Mário Silva, Benoit Garret and Emmanuel
Bouthenot.
现在当我尝试运行通过aptitude安装的程序时,我收到以下错误:
wkhtmltopdf: cannot connect to X server
有谁知道我怎么解决这个问题?我想这个版本缺少虚拟X服务器或其他东西。
或试试这个(来自http://drupal.org/node/870058)
sudo apt-get install wkhtmltopdf
/usr/local/bin/
wkhtmltopdf
,以便现在您在/usr/local/bin/wkhtmltopdf
上有一个可执行文件sudo chmod a+x /usr/local/bin/wkhtmltopdf
sudo apt-get install openssl build-essential xorg libssl-dev
/usr/local/bin/wkhtmltopdf http://www.google.com test.pdf
如果它有效,那么你就完成了。如果收到错误“无法连接到X服务器”,则继续编号7。sudo apt-get install xvfb
wkhtmltopdf.sh
的文件并添加以下内容:
xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@"
/usr/local/bin
,并设置权限:
sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh
/usr/local/bin/wkhtmltopdf.sh http://www.google.com test.pdf
请注意,http://www.google.com可能会抛出一个错误,例如“已完成的ResourceObject收到加载完成的信号。这可能表示iframe需要很长时间才能加载。”您可能想要使用像http://www.example.com
这样的简单页面进行测试。
问题可能是wkhtmltopdf的旧版本 - 来自分发存储库的0.9版需要运行X服务器,但当前版本 - 0.12.2.1不需要它 - 可以无头运行。
从http://wkhtmltopdf.org/downloads.html下载您的发行包并安装它 - 用于Ubuntu:
sudo apt-get install xfonts-75dpi
sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
我只是弄清楚我可以简单地将静态可执行文件移动到/usr/bin/
目录并从任何地方执行它。
wkhtmltopdf
> 0.11
没有这个X-server
问题。
所以在linux服务器上安装0.12.2.1
。
sudo apt-get install xvfb
sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
或者使用wget
安装
URL='http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb'; FILE=`mktemp`; wget "$URL" -qO $FILE && sudo dpkg -i $FILE; rm $FILE
sudo apt-get -f install
/usr/local/bin/
建议至少使用0.12.2.1。
从wkhtmltopdf> = 0.12.2开始,它不再需要X服务器或仿真。你可以从echo 'exec xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@"' | sudo tee /usr/local/bin/wkhtmltopdf.sh >/dev/null
sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh
下载新版本
我确实遵循了这里的指示并让wkhtmltopdf为我工作,但我想提供一些我在与/usr/local/bin/wkhtmltopdf http://www.google.com test.pdf
- http://wkhtmltopdf.org/downloads.html做自己的小舞时发现的视角。
这很重要,因为导致它抛出臭名昭着的wkhtmltopdf
错误的同样原因也导致它以严重限制运行,即使你确实提供了一个X服务器。这些限制包括无法获取多个输入源,设置页眉和页脚等(请查看xvfb
)。
cannot connect to X server
本身不需要X11,但它正在使用QT库。在wwethmltox的newever版本中,开发人员为QT制作了一个补丁,允许它与X11一起运行。
目前有些版本是针对修补的QT构建的,有些则不是。您可以通过运行Reduced Functionality section of the manual来检查您的版本。最后应该有一条线说wkhtmltox
因此,总而言之,如果您安装并使用使用修补库的版本,它应该在没有wkhtmltopds --version
服务器的Linux服务器上工作,我可以确认。
Centos7的解决方案:
Compiled against wkhtmltopdf patched qt.
我们在docker容器中遇到这个问题,上面的安装有wkhtmltopdf和补丁QT
敌人64位使用:
wget xvfb
他公开的自掏腰包0.9.9-static-MD64.tar.b2
sudo mv wkhtmltopdf-amd64 / usr / bin / wkhtmltopdf
sudo chmod + x / usr / bin / wkhtmltopdf
yum -y install xorg-x11-fonts-75dpi \
xorg-x11-fonts-Type1 \
&& rpm -Uvh http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm
下载文件/usr/bin/
提示:/usr/bin/wkhtmltopdf
只需安装0.12.4或更高版本即可。这似乎解决了这个问题。
见wkhtmltopdf http://www.google.com test.pdf
。
你必须将它复制到目录:/ usr / local / bin,make sur it的可执行文件并添加wkhtmltopdf.sh的符号链接,如:
1-命令:
2 - 在目录/ usr / bin中插入二进制文件,以便浏览器无权在此目录中执行。您必须将wkhtmltopdf.sh复制到目录/ usr / local / bin,因为浏览器在此目录中具有以下权限,例如:
3 - 确保二进制文件具有执行权限,如:
sudo apt-get install wkhtmltopdf
4 - 所以现在你可以测试,它的工作方式如下:
sudo cp /usr/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf.sh
它会在终端的当前目录中下载pdf
5 - 现在可选,您可以在目录/ usr / local / bin中添加符号链接
sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh
这解决了我的问题:
sudo apt-get install xvfb
xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltopdf file1.html file2.pdf
我试图做sudo apt-get install wkhtmltopdf
但没有任何成功。相反,我建议你尝试:
wget https://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2
tar -vxf wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2
mv wkhtmltopdf-i386 wkhtmltopdf
chmod a+x wkhtmltopdf
sudo mv wkhtmltopdf /usr/bin
刚刚做到了:
1-下载wkhtmltopdf依赖项
# apt-get install wkhtmltopdf
2-从源代码下载
# wget http://downloads.sourceforge.net/project/wkhtmltopdf/xxx.deb
# dpkg -i xxx.deb
3-尝试
# wkhtmltopdf http://google.com google.pdf
它的工作正常
有用!
我发现没有假X服务器解决这个问题的方法。在wkhtmltopdf的最新版本中,不需要X服务器工作,但它没有进入官方的Linux存储库。
Ubuntu 14.04.4解决方案LTS(可靠)i386
$ sudo apt-get install xfonts-75dpi
$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2/wkhtmltox-0.12.2_linux-trusty-i386.deb
$ sudo dpkg -i wkhtmltox-0.12.2_linux-trusty-i386.deb
$ wkhtmltopdf http://www.google.com test.pdf
Ubuntu 14.04.4 LTS(可靠)amd64的解决方案
$ sudo apt-get install xfonts-75dpi
$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2/wkhtmltox-0.12.2_linux-trusty-amd64.deb
$ sudo dpkg -i wkhtmltox-0.12.2_linux-trusty-amd64.deb
$ wkhtmltopdf http://www.google.com test.pdf
用户felixhummel得到了非常好的解决方案,但是与utilite的存储库已经改变了。
扩展蒂莫西的答案......
如果您是一名希望使用wkhtmltopdf作为Web应用程序一部分的Web开发人员,您可以将其安装到/usr/bin/
文件夹中,如下所示:
cd /usr/bin/
curl -C - -O http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2
tar -xvjf wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2
mv wkhtmltopdf-i386 wkhtmltopdf
您现在可以使用wkhtmltopdf
在任何地方运行它。
我个人在PHP中使用Snappy库。以下是创建PDF的简单示例:
<?php
// Create new PDF
$pdf = new \Knp\Snappy\Pdf('wkhtmltopdf');
// Set output header
header('Content-Type: application/pdf');
// Generate PDF from HTML
echo $pdf->getOutputFromHtml('<h1>Title</h1><p>Your content goes here.</p>');
从SourceForge更新到最新的wkhtmltopdf版本(撰写本文时为0.12)。它不需要运行X Server。
Ubuntu 14.04的示例:
$ cd /tmp/
$ wget -q http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
$ dpkg -x wkhtmltox-0.12.2.1_linux-trusty-amd64.deb foo
$ echo '<p>hi</p>' | ./foo/usr/local/bin/wkhtmltopdf - /tmp/hi.pdf
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
$ head -n3 /tmp/hi.pdf
%PDF-1.4
1 0 obj
<<
对于14.04.1-Ubuntu https://wkhtmltopdf.org/downloads.html
wget https://downloads.wkhtmltopdf.org/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz -O mktemp.tar.xz
tar xf mktemp.tar.xz
sudo cp wkhtmltox/bin/wkhtmltopdf /usr/bin/wkhtmltopdf
sudo chmod +x /usr/bin/wkhtmltopdf
rm mktemp.tar.xz
rm wkhtmltox -rf
apt-get update
apt-get install -y libxrender1 libxtst6 libxi6
wkhtmltopdf http://www.google.com test.pdf
sudo -i
apt-get install wkhtmltopdf xvfb libicu48
mv /usr/bin/wkhtmltopdf /usr/bin/wkhtmltopdf-origin
touch /usr/bin/wkhtmltopdf && chmod +x /usr/bin/wkhtmltopdf && cat > /usr/bin/wkhtmltopdf << END
#!/bin/bash
/usr/bin/xvfb-run -a -s "-screen 0 1024x768x24" /usr/bin/wkhtmltopdf-origin "\$@"
END