Php laravel snappy:未创建文件

Php laravel snappy:未创建文件,php,laravel,laravel-5,wkhtmltopdf,laravel-snappy,Php,Laravel,Laravel 5,Wkhtmltopdf,Laravel Snappy,目前,我正试图追踪这个问题是从哪里产生的,因为没有重大改变 但目前我正在使用laravel snappy生成PDF,直到现在我才遇到问题,突然收到以下错误: 未创建文件“C:\Users\ADMINI~1\AppData\Local\Temp\knp_snappy5a7d3011c11883.41249127.pdf”(命令:“C:\Program Files\wkhtmltopf\bin\wkhtmltopdf”--低质量--图像--启用javascript--javascript延迟“10”

目前,我正试图追踪这个问题是从哪里产生的,因为没有重大改变

但目前我正在使用laravel snappy生成PDF,直到现在我才遇到问题,突然收到以下错误:

未创建文件“C:\Users\ADMINI~1\AppData\Local\Temp\knp_snappy5a7d3011c11883.41249127.pdf”(命令:“C:\Program Files\wkhtmltopf\bin\wkhtmltopdf”--低质量--图像--启用javascript--javascript延迟“10”“C:\Users\ADMINI~1\AppData\Local\Temp\knp_snappy5a7d3011b9a179.91650543.html”“C:\Users\ADMINI~1\AppData\Local\Temp\knp_snappy5a7d3011c11883.41249127.pdf”)

不幸的是,它没有告诉我为什么没有创建它。此时,错误处理程序指向返回此错误的特定行:

if (!$this->fileExists($output)) {
    throw new \RuntimeException(sprintf(
        'The file \'%s\' was not created (command: %s).',
        $output, $command
    ));
}
这一行来自此文件:
vendor\knplabs\knp snappy\src\knp\snappy\AbstractGenerator.php

我的wkhtmltopdf二进制文件位于正确的位置,这些文件的设置没有改变。是的,目前这些文件在Windows Server平台上托管和提供服务

snappy的我的配置:

<?php

return array(

    'pdf' => array(
        'enabled' => true,
        'binary' => '"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf"',
        'timeout' => false,
        'options' => array(),
        'env'     => array(),
    ),
    'image' => array(
        'enabled' => true,
        'binary'  => '"C:\Program Files\wkhtmltopdf\bin\wkhtmltoimage"',
        'timeout' => false,
        'options' => array(),
        'env'     => array(),
    ),

);

解决此问题的最简单方法是执行一个原始命令,wkhtmltopdf在Linux/Windows上没有相同的命令行参数,这意味着snappy包装器仅适用于amd64,在64位Windows可执行文件中使用时失败

exec("C:/path/to/wkhtmltopdf.exe path/to/my.html destination/for/my.pdf");
由于这个解决方案很糟糕,而且wkhtmltopdf功能在windows上受到限制,我强烈建议您使用docker部署,或者只在Linux下开发。否则您将无法使用pdf页脚、pdf编码utf-8等多种功能


下面是一篇关于如何使用docker compose for laravel的文章!

如果其他人在谷歌上也有同样的问题,并且他们不喜欢“只在Linux上做”这个公认的答案,那么就发布这篇文章


<> P>因为我没有安装VisualC++ 2013——在命令行中运行文件给我关于在ReDIST中包含的丢失的DLL的错误。

我得到了相同的问题…实际上,如果您在终端中粘贴命令,看起来WKHTMLTLPDF正在尝试HTTP请求而不是读取路径,我也是Reo。我建议您使用laravel snappy来代替laravel snappy,它的维护比laravel snappy好得多,laravel snappy上一次提交是在2016年……今晚我已经做了足够的编程,明天我会找到Windows的答案。您也可以在Linux下与Docker一起工作。一切正常。安装时感谢更新!事实上,已接受的答案是这不是最好的,但它奏效了。。。
exec("C:/path/to/wkhtmltopdf.exe path/to/my.html destination/for/my.pdf");