ubuntu - wkhtmltopdf 带有快速错误

标签 ubuntu wkhtmltopdf knp-snappy

所以我正在开发一个系统,我将html转换为pdf,我选择wkhtmltopdf有很多原因,所以当我使用xampp在windows上开发时
我有以下代码,它工作得非常完美

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

require '../../vendor/autoload.php';

$aname=$_POST['aname'];
$name=$_POST['name'];
$email=$_POST['email'];
$str = json_decode($_POST['wah'], true); 

function load_template_to_string($file_name) {
  ob_start();
  include $file_name;
  return ob_get_contents();

}



//snappy
use Knp\Snappy\Pdf;
$snappy = new Pdf('C://"Program Files"/wkhtmltopdf/bin/wkhtmltopdf.exe');
header('Content-type', 'application/octect-stream');
header('Content-Disposition: attachment; filename="file.pdf"');
header('Content-Transfer-Encoding', 'binary');
// echo $snappy->getOutput('http://www.google.co.uk');
$snappy->setOption('no-outline', true);
$snappy->setOption('page-size','LETTER');
$snappy->setOption('encoding', 'UTF-8');

$abc = load_template_to_string('mailtemp.php');
$pdf_data = $snappy->getOutputFromHtml($abc);

其余代码是通过 swiftmailer 发送作为附件制作的 pdf
这绝对没问题。

但是当我将相同的文件发送到我的服务器时,我的服务器是一台 ubuntu 机器

现在的代码是这样的
require '../../vendor/autoload.php';
error_reporting(E_ALL);
ini_set("display_errors", 1);

$aname=$_POST['aname'];
$name=$_POST['name'];
$email=$_POST['email'];
$str = json_decode($_POST['wah'], true); 

function load_template_to_string($file_name) {
  ob_start();
  include $file_name;
  return ob_get_contents();

}


 //snappy
use Knp\Snappy\Pdf;

$snappy = new Pdf('/usr/bin/wkhtmltopdf');

header('Content-type', 'application/octect-stream');
header('Content-Disposition: attachment; filename="file.pdf"');
header('Content-Transfer-Encoding', 'binary');
// echo $snappy->getOutput('http://www.google.co.uk');
$snappy->setOption('no-outline', true);
$snappy->setOption('page-size','LETTER');
$snappy->setOption('encoding', 'UTF-8');

$abc = load_template_to_string('mailtemp.php');
$pdf_data = $snappy->getOutputFromHtml($abc);

但是当我使用它时会导致错误,它看起来像这样
<b>Fatal error</b>:  Uncaught RuntimeException: The exit status code '134' says something went wrong:
stderr: &quot;The switch --no-outline, is not support using unpatched qt, and will be ignored.QXcbConnection: Could not connect to display 
Aborted (core dumped)
&quot;
stdout: &quot;&quot;
command: /usr/bin/wkhtmltopdf --lowquality --page-size 'LETTER' --no-outline --encoding 'UTF-8' '/tmp/knp_snappy5a574d59b2e0f8.38598858.html' '/tmp/knp_snappy5a574d59b2e8a4.82962094.pdf'. in /var/www/html/flightsystem/vendor/knplabs/knp-snappy/src/Knp/Snappy/AbstractGenerator.php:378
Stack trace:
#0 /var/www/html/flightsystem/vendor/knplabs/knp-snappy/src/Knp/Snappy/AbstractGenerator.php(177): Knp\Snappy\AbstractGenerator-&gt;checkProcessStatus(134, '', 'The switch --no...', '/usr/bin/wkhtml...')
#1 /var/www/html/flightsystem/vendor/knplabs/knp-snappy/src/Knp/Snappy/Pdf.php(63): Knp\Snappy\AbstractGenerator-&gt;generate(Array, '/tmp/knp_snappy...', Array, false)
#2 /var/www/html/flightsystem/vendor/knplabs/knp-snappy/src/Knp/Snappy/AbstractGenerator.php(221): Knp\Snapp in <b>/var/www/html/flightsystem/vendor/knplabs/knp-snappy/src/Knp/Snappy/AbstractGenerator.php</b> on line <b>378</b><br />

最佳答案

错误消息说

The switch --no-outline, is not supported



在您的设置上。

所以我建议你不要使用它(除非你有理由)。

只需删除以下行:
$snappy->setOption('no-outline', true);

关于ubuntu - wkhtmltopdf 带有快速错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48206279/

相关文章:

magento - 用于图像的第二个 Linux 服务器(与 Magento 组合)

linux - 使用 Locust 对同时从 CSV 加载的多个 URL 运行负载测试

php - 如何在xampp上安装wkhtmltopdf?

java - 如何在 java 中使用 wkhtmltopdf 将 pdf 导出到 OutputStream

javascript - wkhtmltopdf 标题中不必要的空白

linux - 如何使在 UBUNTU 上使用 cx_Freeze 构建的 PYQT4 应用程序在 Linux SUSE 上运行。

python - 使用 Python 脚本和 netcat 转发消息

php - 使用 wkhtmltopdf 添加标题、作者、主题、关键字元数据

unicode - WkHTMLtoPDF Unicode 问题

pdf - 如何使用 knp-snappy-bundle 从 HTML 在 PDF 中设置页眉和页脚?