目前,考虑到没有任何重大变化,我正在试图追踪这个问题是从何而来的。
但是,目前我使用laravel-snappy生成pdfs,直到现在我才突然收到以下错误:
未创建文件'C:\Users\ADMINI~1\AppData\Local\Temp\knp_snappy5a7d3011c11883.41249127.pdf‘(命令:"C:\Program \wkhtmltopdf\bin\wkhtmltopdf“-低质量-图像-启用-javascript- "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平台上服务。
我对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(),
),
);我的文件是通过我的控制器生成的:
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();
}发布于 2018-02-17 23:39:22
解决这个问题的最简单方法是执行一个原始命令,wkhtmltopdf在Linux/Windows上没有相同的命令行参数,这意味着snappy包装器只对amd64工作,当它与64位窗口可执行文件一起使用时失败。
exec("C:/path/to/wkhtmltopdf.exe path/to/my.html destination/for/my.pdf");由于这个解决方案很糟糕,而且wkhtmltopdf功能受限于windows,所以我强烈建议您使用docker部署,或者只在Linux下进行开发。否则您将无法使用倍数功能,如pdf页脚,pdf编码utf-8和更多.
这是一个关于如何使用码头组成的教程的拉拉!
发布于 2020-03-12 04:55:00
如果其他人的googling有同样的问题,他们不喜欢被接受的“在Linux中做它”的答案。
对我来说,这是因为Visual 2013没有安装--在命令行中运行文件会导致redist中包含的缺少C++的错误。
https://stackoverflow.com/questions/48699278
复制相似问题