
问题麻烦跳转看下 https://segmentfault.com/q/1010000020318067
搞了一早上没得头绪,求支招
1 kkshell OP youyou 会的大佬不 |
2 AlloVince 2019-09-07 14:46:25 +08:00 和 php 无关,wkhtmltopdf 需要启动图形界面,你可以借助 xvfb 封装一个无界面的命令行 具体可以参考我以前写过的一个 wkhtmltopdf 微服务 dockerfile https://gist.github.com/AlloVince/947a2d08bc934a592b6eb58cc6410fde |
4 manhere 2019-09-07 15:04:21 +08:00 可以 composer require "knplabs/knp-snappy" |
6 manhere 2019-09-07 15:06:30 +08:00 @kkshell https://github.com/KnpLabs/snappy 一直使用,没有问题 |
7 gamesme 2019-09-07 15:25:51 +08:00 via iPhone 虽然我是个小白 但是有看过一个 laravel 项目使用 wkhtmltopdf 项目叫 Bookstackapp 里面也是用楼上提到的 knpsnappy 包来调用 wkhtmltopdf 具体代码我就看不懂了 不知道能不能帮到你 |
8 gamesme 2019-09-07 15:26:56 +08:00 via iPhone 好像不是用 exec 是用 proc_open 执行 |
9 kkshell OP @manhere $snappy = new Pdf('/usr/bin/wkhtmltopdf'); $snappy->generateFromHtml($content, '/tmp/bill-123.pdf'); 问题依旧如下:The exit status code '1' says something went wrong: stderr: "wkhtmltopdf: cannot connect to X server " stdout: "" command: /usr/bin/wkhtmltopdf --lowquality '/tmp/knp_snappy5d735f969db923.75691036.html' '/tmp/bill-123.pdf'. |
10 kkshell OP @gamesme 嗯,但是还是有这个问题 wkhtmltopdf: cannot connect to X server |
12 sleepm 2019-09-07 16:10:25 +08:00 via Android 你把它整复杂了 exec 直接调用 wkhtmltopdf 完了,要啥 xserver |
13 kkshell OP @sleepm 直接调用就是报这个错 string(41) "wkhtmltopdf: cannot connect to X server" |
14 gamesme 2019-09-07 16:25:13 +08:00 目前为止我觉得二楼的回答是最靠谱的 For CentOS PHP environment the WkHTMLtoPDF tool not need xvfb-run to exec the command, But for Ubuntu PHP environment need xvfb-run to exec the command! I had revised my code as below and the issues was resolved 这是楼主您在 segmentfault 贴的解决办法链接,错误出现的原因应该是 Ubuntu 需要图形界面来运行 wkhtmltopdf |
15 wangyongbo 2019-09-07 16:31:04 +08:00 你可以尝试升级到这个版本。wkhtmltopdf 0.12.4 (with patched qt) 我在 python 里面用的这个版本。 运行正常。 |
16 zjsxwc 2019-09-07 16:33:11 +08:00 基于 Qt Webkit 的工具你想不依赖 x server 就能运行? |
17 183shl 2019-09-07 22:52:33 +08:00 via Android 借帖子问一下,我用 python 写了一个 markdown 转 pdf,表格渲染不出来怎么解决呢 |
18 linxiaojialin 2019-09-08 01:31:45 +08:00 Laravel: # config/snappy.php return [ 'pdf' => array( 'enabled' => true, 'binary' => '/usr/local/bin/wkhtmltopdf', 'timeout' => false, 'options' => [], 'env' => [], ), 'image' => array( 'enabled' => true, 'binary' => '/usr/local/bin/wkhtmltoimage', 'timeout' => false, 'options' => [], 'env' => [], ), ]; # Controller@method: $snappy = resolve('snappy.image.wrapper'); return $snappy->getOutput($url); |
19 MeteorCat 2019-09-08 23:46:48 +08:00 via Android 这个玩意需要 x 桌面环境,也就是图形化处理;这个没办法,我记得蚂蚁笔记服务器部署也有这个,一安装这个划拉一堆 X 桌面环境 |