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

error to print pdf in linux with Snappy PDF

我在 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

谢谢

首先你必须使用 composer require knplabs/knp-snappy 安装 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

如果你遵循了 vagrant 的步骤,那一行应该是这样的

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

  1. 如果你想下载 wkhtmltopdf 和 wkhtmltoimage with composer 你添加到 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 命令使 exdcutable 可用。
您可以这样添加要求:

composer require barryvdh/laravel-snappy  

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

php composer.phar update  

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

这就是解决方案

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

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

感谢