如何在基于linux(共享主机)的web服务器上安装wkhtmltopdf

如何在基于linux(共享主机)的web服务器上安装wkhtmltopdf,pdf,wkhtmltopdf,Pdf,Wkhtmltopdf,我尝试了各种方法在我们的web服务器上安装wkhtmltopdf,但不幸的是没有安装。我无法访问安装教程中所述的user/bin文件夹 在服务器上的public_html文件夹中有一个子文件夹\u vti_bin,我从wkhtmltopdf-0.9.1-static-i386复制了文件wkhtmltopdf-i386,但我无法执行它 如何在(共享托管)web服务器上安装wkhtmltopdf,并使其正常工作?如果没有对此服务器的完全访问权限(由于是托管帐户),您可能会遇到问题。我甚至可以说,我认

我尝试了各种方法在我们的web服务器上安装wkhtmltopdf,但不幸的是没有安装。我无法访问安装教程中所述的user/bin文件夹

在服务器上的public_html文件夹中有一个子文件夹\u vti_bin,我从wkhtmltopdf-0.9.1-static-i386复制了文件wkhtmltopdf-i386,但我无法执行它


如何在(共享托管)web服务器上安装wkhtmltopdf,并使其正常工作?

如果没有对此服务器的完全访问权限(由于是托管帐户),您可能会遇到问题。我甚至可以说,我认为这是一个徒劳的努力——他们有充分的理由将服务器锁定在托管环境中

打电话给你的托管公司,请求他们安装,但不要期望得到良好的响应——除非有很好的理由(例如bug修复),否则他们通常不会为单个用户安装非常定制的项目

P>最后,取决于你对服务器管理的熟悉程度,以及你为服务器托管所付出的代价,现在考虑一些类似的事情。每月20台将为您提供一台低级web服务器(256 ram),您可以安装任何您想要的东西。但是,如果您正在运行多个站点或负载很重,那么由于您需要更大的服务器,成本会上升


德国劳埃德船级社

将wkhtmltopdf可执行文件放在服务器上,并将其chmod+x

创建包含以下内容的可执行shell脚本wrap.sh:

#!/bin/sh
export HOME="$PWD"
export LD_LIBRARY_PATH="$PWD/lib/"
exec $@ 2>/dev/null
#exec $@ 2>&1 # debug mode
下载该体系结构所需的共享对象,并将其放置在名为“lib”的文件夹中:

  • lib/libfontconfig.so.1
  • lib/libfontconfig.so.1.3.0
  • lib/libfreetype.so.6
  • lib/libfreetype.so.6.3.18
  • lib/libX11.so.6 lib/libX11.so.6.2.0
  • lib/libXau.so.6 lib/libXau.so.6.0.0
  • lib/libxcb.so.1 lib/libxcb.so.1.0.0
  • lib/libxcb xlib.so.0
  • lib/libxcb xlib.so.0.0.0
  • lib/libXdmcp.so.6
  • lib/libXdmcp.so.6.0.0
  • lib/libXext.so.6 lib/libXext.so.6.4.0
(其中一些是符号链接)

…你已经准备好了:

./wrap.sh ./wkhtmltopdf-amd64 --page-size A4 --disable-internal-links --disable-external-links "http://www.example.site/" out.pdf
如果遇到字体问题,如所有字符都是正方形,请明确定义TrueType字体:

@font-face {
  font-family:Trebuchet MS;
  font-style:normal;
  font-weight:normal;
  src:url("http://www.yourserver.tld/fonts/Trebuchet_MS.ttf");
  format(TrueType);
}

我已成功地在我的共享主机帐户上安装了wkhtmltopdf-amd64,而无需root访问权限

以下是我所做的:

从此处下载相关的静态二进制文件v0.10.0:

编辑:以上内容已移至

通过共享主机上的ssh键入以下内容:

$ wget {relavant url to binary from link above}
$ tar -xvf {filename of above wget'd file}
然后,您将在主机上拥有该二进制文件,并且无论其是否在/usr/bin/文件夹中,都可以运行它。(或者至少我能做到)

要测试:

$ ./wkhtmltopdf-amd64 http://www.example.com example.pdf
  • 请注意,请记住,如果您位于可执行文件所在的文件夹中,您可能应该在其前面加上
    /
    ,以确保这一点

不管怎么说,这对我来说是有效的

如果是ubuntu,那么就继续这个,已经测试过了--

首先,安装依赖项

sudo aptitude install openssl build-essential xorg libssl-dev
64位操作系统

wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-amd64.tar.bz2 
tar xvjf wkhtmltopdf-0.9.9-static-amd64.tar.bz2
mv wkhtmltopdf-amd64 /usr/local/bin/wkhtmltopdf
chmod +x /usr/local/bin/wkhtmltopdf
32位操作系统

wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-i386.tar.bz2 
tar xvjf wkhtmltopdf-0.9.9-static-i386.tar.bz2
 mv wkhtmltopdf-i386 /usr/local/bin/wkhtmltopdf
chmod +x /usr/local/bin/wkhtmltopdf

如果您有
sudo
访问权限

Ubuntu 14.04/15.04/18.04: 其他
查看其他答案。

稳定版本列表wkhtmltopdf:

在Debian 8.2(jessie)x64上安装wkhtmltopdf:
Debian 8 Jessie
这很有效
sudo apt get install wkhtmltopdf
共享主机没有ssh或shell访问

我是这样做的

  • 访问并下载相应的Linux稳定版。对于我的案例,我选择了32位 它是wkhtmltox-0.12.4_linux-generic-i386.tar.xz
  • 解压缩到本地驱动器上的文件夹
  • 像其他文件一样,使用FTP程序将文件夹上载到public_html(或任何适合您需要的位置)
  • 更改snappy.php文件中的二进制路径,以指向刚刚上载的文件夹中的相应文件。 答对 了给你。您应该能够生成PDF文件

  • 自从添加了最重要的答案后,一些事情发生了变化。他们曾经为我工作过,但现在不太适合了,所以我已经尝试了一段时间,并为ubuntu16.04提出了以下解决方案。对于Ubuntu 14.04,请参见答案底部的注释。如果这对共享主机不起作用,我深表歉意,但这似乎是wkhtmltopdf安装说明的常见问题

    # Install dependencies
    apt-get install libfontconfig \
        zlib1g \
        libfreetype6 \
        libxrender1 \
        libxext6 \
        libx11-6
    
    # TEMPORARY FIX! SEE: https://github.com/wkhtmltopdf/wkhtmltopdf/issues/3001
    apt-get install libssl1.0.0=1.0.2g-1ubuntu4.8
    apt-get install libssl-dev=1.0.2g-1ubuntu4.8
    
    # Download, extract and move binary in place
    curl -L -o wkhtmltopdf.tar.xz https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
    tar -xf wkhtmltopdf.tar.xz
    mv wkhtmltox/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
    chmod +x /usr/local/bin/wkhtmltopdf
    
    测试一下:

    wkhtmltopdf http://www.google.com google.pdf
    
    您现在应该在当前工作目录中有一个名为
    google.pdf
    的文件

    这种方法从网站下载二进制文件,这意味着您可以使用最新版本,而不必依赖包管理器进行更新

    请注意,从今天起,我的解决方案包括一个临时修复程序。我意识到这个解决方案并不是很好,但希望它能很快被移除阅读此答案时,请务必检查链接GitHub问题的状态,以查看是否仍然需要修复

    对于Ubuntu 14.04,您需要降级到不同版本的libssl。你可以。不管怎样,一定要考虑在任何生产服务器上这样做之前降低LIbSSL的含义。
    我希望这对别人有帮助

    尝试之后,下面的命令为我工作

    cd ~
    yum install -y xorg-x11-fonts-75dpi xorg-x11-fonts-Type1 openssl git-core fontconfig
    wget https://downloads.wkhtmltopdf.org/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
    tar xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
    mv wkhtmltox/bin/wkhtmlto* /usr/bin
    

    wkhtmltopdf的12.5版现在只在下载页面上列出DEB文件。作为一个mac用户,我不太了解linux或者什么是DEB文件,所以我无法使用发布的解决方案

    此页面帮助我克服了下载DEB文件的已知难题:

    我所做的基本上是:

  • 下载自
  • 解压了DEB文件
  • 解压data.tar.xz
  • 从步骤3(usr/local/bin/wkhtmltopdf)将二进制文件上载到解压缩的“usr”文件夹中
  • 然后我发现“exec”功能在我的主机上被禁用。所以,如果您使用PHP来运行这个程序,请确保您可以专门运行“exec”。
    wkhtmltopdf http://www.google.com google.pdf
    
    cd ~
    yum install -y xorg-x11-fonts-75dpi xorg-x11-fonts-Type1 openssl git-core fontconfig
    wget https://downloads.wkhtmltopdf.org/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
    tar xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
    mv wkhtmltox/bin/wkhtmlto* /usr/bin