Laravel:尝试获取 PDF 时出现 DOMPDF 错误

Posted

技术标签:

【中文标题】Laravel:尝试获取 PDF 时出现 DOMPDF 错误【英文标题】:Laravel: DOMPDF error when trying to get PDF 【发布时间】:2021-10-01 03:20:00 【问题描述】:

我一直在尝试使用 DOMPDF 获取视图的 PDF,其中包含从数据库表填充的成分表。

我在控制器中创建了一个函数:

public function createPDF() 
      // retreive all records from db
      $data = Ingredients::all();

      // share data to view
      view()->share('ingredients', $data);
      $pdf = PDF::loadView('printableingredientslist', $data);

      // download PDF file with download method
      return $pdf->download('printableingredientslist.pdf');
    

而web.php中的路由定义为:

Route::get('/printpreviewingredients/pdf', [MealPlanDisplayController::class, 'createPDF']);

但是,我不断收到此错误:

fopen(D:\mealplan\storage\fonts//nunito_normal_46b9b3b48cc3ddbae60da82f1c1c5d29.ufm): 无法打开流:没有这样的文件或目录

这一定与“printableingredientslist”有关,因为当我将它替换为带有简单文本的plain view page 时,它可以工作。但是,我正在努力查看路径问题,因为printableingredientslist.blade.php 只是在views 文件夹下。问题可能是什么?我用的是tailwind.css,会不会有问题?

【问题讨论】:

【参考方案1】:

setOptions 方法使用默认字体。例如如下

public function pdf() 
 
    $pdf = \PDF::loadView('contact')->setOptions(['defaultFont' => 'sans-serif']); 
        
    return $pdf->download('invoice.pdf'); 

storage目录下创建目录fonts

参考:https://github.com/barryvdh/laravel-dompdf/issues/724

参考:https://github.com/barryvdh/laravel-dompdf/issues/176

参考:https://github.com/barryvdh/laravel-dompdf/issues/269

【讨论】:

以上是关于Laravel:尝试获取 PDF 时出现 DOMPDF 错误的主要内容,如果未能解决你的问题,请参考以下文章

从 json i laravel 获取数据时出现错误异常

如果source是pdf类型,则将ps转换为pdf时出现问题

从视图表中获取数据时出现 Laravel 错误

尝试通过 AJAX 验证 Laravel 表单时出现错误 422

尝试迁移 Laravel 数据库时出现错误

在 Laravel 中获取贝宝付款详细信息时出现 403 错误