使用Snappy PDF在Linux中打印pdf时出错

时间:2019-12-30 03:47:07

标签: php laravel pdf snappy

我在config / snappy.php中的配置文件有问题 在Windows编程中,我有这种配置,工作真的很好,问题是当我将代码放在linux的生产应用程序中时,配置不一样。...


return array(
    'pdf' => array(
        'enabled' => true,
       'binary' => '"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe"',       
       //'binary' => '"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf"',
        'options' => array(),
    ),
    'image' => array(
        'enabled' => true,
        'binary' => '"C:\Program Files\wkhtmltopdf\bin\wkhtmltoimage.exe"',
        'options' => array(),
    ),
);

我尝试使用此配置,但无法正常工作...

'binary' => '/usr/local/bin/wkhtmltopdf-amd64',

并且也有这行

'binary' => base_path('vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64'),

但不起作用...

有Ubuntu

php 7.0

laravel 5.5

谢谢

3 个答案:

答案 0 :(得分:0)

首先,您必须使用composer require knplabs/knp-snappy安装敏捷的依赖项(请参阅此repository

然后二进制文件将位于/vendor/h4cc/wkhtmltoimage-amd64/bin and /vendor/h4cc/wkhtmltopdf-amd64/bin

将二进制文件移动到不在同步文件夹中的路径,例如:

cp vendor/h4cc/wkhtmltoimage-amd64/bin/wkhtmltoimage-amd64 /usr/local/bin/ cp vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 /usr/local/bin/

使其可执行:

chmod +x /usr/local/bin/wkhtmltoimage-amd64 chmod +x /usr/local/bin/wkhtmltopdf-amd64

这将防止错误126。

请查看并浏览文档here

如果您遵循了无所事事的步骤,则该行应该看起来像

'binary'=>'/ usr / local / bin / wkhtmltopdf-amd64',

答案 1 :(得分:0)

  1. 如果要使用composer下载wkhtmltopdf和wkhtmltoimage,请添加到composer.json:

    $作曲家需要h4cc / wkhtmltopdf-i386 0.12.x
    $作曲家需要h4cc / wkhtmltoimage-i386 0.12.x

或者如果您使用的是基于64位的系统,则此操作:

$ composer require h4cc/wkhtmltopdf-amd64 0.12.x
$ composer require h4cc/wkhtmltoimage-amd64 0.12.x  

您现在应该可以从cmd / terminal使用它。
您可以像这样在PHP中使用它:

<?php

use Knp\Snappy\Pdf;

$myProjectDirectory = '/path/to/my/project';

$snappy = new Pdf($myProjectDirectory . '/vendor/h4cc/wkhtmltopdf-i386/bin/wkhtmltopdf-i386');

// or

$snappy = new Pdf($myProjectDirectory . '/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64');  

如果您是vagrant用户,则应使用mv命令将二进制文件移至未同步的文件夹。然后使用chmod +x命令将其变为可执行文件。
您可以添加如下要求:

composer require barryvdh/laravel-snappy  

然后使用此命令更新作曲家

php composer.phar update  

您可以找到基本用法here...

答案 2 :(得分:0)

这是解决方案

$作曲家需要h4cc / wkhtmltopdf-amd64 0.12.x $作曲家需要h4cc / wkhtmltoimage-amd64 0.12.x

我的错误是将此命令放在项目文件夹中,但在根目录中...

谢谢