KnpSnappyBundle - stderr:“wkhtmltopdf:无法连接到X服务器”stdout:“”

问题描述 投票:3回答:2

我正在尝试使用KnpSnappyBundle从树枝模板创建PDF文件。

我跟着这个post来安装wkhtmltopdf,当我这样做时它可以工作:

wkhtmltopdf http://www.google.com test.pdf

但是当我尝试从控制器创建PDF文件时:

$this->get('knp_snappy.pdf')->generateFromHtml(
$this->renderView('AcmePDFBundle:Default:template.html.twig'),
'../app/var/PDFfiles/PDF.pdf'
); 

我收到这个错误:

request.CRITICAL: RuntimeException: The exit status code '1' says something went wrong:
stderr: "wkhtmltopdf: cannot connect to X server
"
stdout: ""
command: /usr/bin/wkhtmltopdf --lowquality '/tmp/knp_snappy532ca2272fba44.73835084.html' '../app/var/files/PDF.pdf'. (uncaught exception) at /home/me/MyServer/project/vendor/knplabs/knp-snappy/src/Knp/Snappy/AbstractGenerator.php line 304 [] []

怎么解决它的想法?

这是我对KnpSnappyBundle的配置:

knp_snappy:
    pdf:
        enabled:    true
        binary:     /usr/bin/wkhtmltopdf
        options:    []
    image:
        enabled:    false
        binary:     /usr/bin/wkhtmltoimage
        options:    []
symfony pdf-generation wkhtmltopdf
2个回答
4
投票

已解决安装预编译版本的问题。现在你可以从这里获得你的版本(灵感来自this过时答案):

http://wkhtmltopdf.org/downloads.html

并将我的config.yml改为:

knp_snappy:
    pdf:
        enabled:    true
        binary:     /usr/local/bin/wkhtmltopdf
        options:    []
    image:
        enabled:    false
        binary:     /usr/local/bin/wkhtmltoimage
        options:    []

现在它有效!


0
投票

你必须将它复制到目录:/ usr / local / bin,make sur it的可执行文件并添加wkhtmltopdf.sh的符号链接,如:

1-命令:

sudo apt-get install wkhtmltopdf

2 - 在目录/ usr / bin中插入二进制文件,以便浏览器无权在此目录中执行。您必须将wkhtmltopdf.sh复制到目录/ usr / local / bin,因为浏览器在此目录中具有以下权限,例如:

sudo cp /usr/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf.sh

3 - 确保二进制文件具有执行权限,如:

sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh

4 - 所以现在你可以测试,它的工作方式如下:

/usr/local/bin/wkhtmltopdf.sh http://www.google.com google.pdf

它会在终端的当前目录中下载pdf

5 - 现在可选,您可以在目录/ usr / local / bin中添加符号链接

ln -s /usr/local/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf

6 - 将/ usr / bin / wkhtmltoimage复制到/ usr / local / bin / wkhtmltoimage中:

sudo cp usr/local/wkhtmltoimage usr/local/bin/wkhtmltoimage

8-确保这也是可执行的:

sudo chmod a+x /usr/local/bin/wkhtmltoimage

7 - 在config / packages / knp_snappy.yaml中更改symfony配置中的二进制目录:

knp_snappy:
    pdf:
        enabled:    true
        binary:     /usr/local/bin/wkhtmltopdf
        options:    []
    image:
        enabled:    false
        binary:     /usr/local/bin/wkhtmltoimage
        options:    []

我希望它对你有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.