首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KnpSnappyBundle - stderr:"wkhtmltopdf:无法连接到X服务器“

KnpSnappyBundle - stderr:"wkhtmltopdf:无法连接到X服务器“
EN

Stack Overflow用户
提问于 2014-03-22 08:38:41
回答 2查看 9.1K关注 0票数 3

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

我遵循这个帖子来安装wkhtmltopdf,当我这样做时,它可以工作:

代码语言:javascript
复制
wkhtmltopdf http://www.google.com test.pdf

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

代码语言:javascript
复制
$this->get('knp_snappy.pdf')->generateFromHtml(
$this->renderView('AcmePDFBundle:Default:template.html.twig'),
'../app/var/PDFfiles/PDF.pdf'
); 

我得到了一个错误:

代码语言:javascript
复制
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的配置:

代码语言:javascript
复制
knp_snappy:
    pdf:
        enabled:    true
        binary:     /usr/bin/wkhtmltopdf
        options:    []
    image:
        enabled:    false
        binary:     /usr/bin/wkhtmltoimage
        options:    []
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-22 09:15:20

解析安装预编译版本。现在您可以从这里获得您的版本(受过时答案的启发):

http://wkhtmltopdf.org/downloads.html

并将我的config.yml更改为:

代码语言:javascript
复制
knp_snappy:
    pdf:
        enabled:    true
        binary:     /usr/local/bin/wkhtmltopdf
        options:    []
    image:
        enabled:    false
        binary:     /usr/local/bin/wkhtmltoimage
        options:    []

现在起作用了!

票数 4
EN

Stack Overflow用户

发布于 2019-04-18 21:05:19

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

1-指挥部:

代码语言:javascript
复制
sudo apt-get install wkhtmltopdf

2-在目录/usr/bin中插入二进制文件,这样浏览器就不能在这个目录中执行。必须将wkhtmltopdf.sh复制到/usr/local/bin目录,因为浏览器在此目录中具有权限,如下所示:

代码语言:javascript
复制
sudo cp /usr/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf.sh

3.在make sur之后,二进制程序获得执行许可,例如:

代码语言:javascript
复制
sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh

所以现在你可以测试了,它的工作就像:

代码语言:javascript
复制
/usr/local/bin/wkhtmltopdf.sh http://www.google.com google.pdf

它可以下载终端当前目录中的pdf。

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

代码语言:javascript
复制
ln -s /usr/local/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf

6-将/usr/bin/wkhtmltoimage复制到/usr/local/bin/wkhtmltoimage中,类似于:

代码语言:javascript
复制
sudo cp usr/local/wkhtmltoimage usr/local/bin/wkhtmltoimage

8-使sur这也是可执行的:

代码语言:javascript
复制
sudo chmod a+x /usr/local/bin/wkhtmltoimage

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

代码语言:javascript
复制
knp_snappy:
    pdf:
        enabled:    true
        binary:     /usr/local/bin/wkhtmltopdf
        options:    []
    image:
        enabled:    false
        binary:     /usr/local/bin/wkhtmltoimage
        options:    []

我希望这能帮你

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22575343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档