目前,鉴于没有任何重大更改,我正在尝试追踪此问题的根源。
但是目前我使用 laravel-snappy 生成 pdf,直到现在我突然收到以下错误:
The file 'C:\Users\ADMINI~1\AppData\Local\Temp\knp_snappy5a7d3011c11883.41249127.pdf' was not created (command: "C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf" --lowquality --images --enable-javascript --javascript-delay "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 平台上托管和提供服务。
我的快速配置:
<?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(),
),
);
我的文件是通过我的 Controller 生成的:
public function downloadPDF(Shipment $shipment) {
$shipment_details = $shipment->shipment_details;
$shipment->print_date = Carbon::now();
$shipment->save();
$pdf = PDF::loadView('shipments.pdf', compact('shipment','shipment_details'))
->setOption('images', true)
->setOption('enable-javascript', true)
->setOption('javascript-delay', 10);
return $pdf->download('shipment'.$shipment->uuid.'.pdf');
$shipment->print_date = Carbon::now();
$shipment->save();
}
最佳答案
发布此内容是为了防止其他人在谷歌搜索时遇到同样的问题,并且他们不喜欢“在 Linux 中这样做”的公认答案
对我来说,这是因为未安装 Visual C++ 2013 - 在命令行中运行该文件会出现有关缺少 redist 中包含的 dll 的错误。
关于php - laravel-snappy:文件未创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48699278/