Laravel 将生成的 Pdf 保存在队列中

Posted

技术标签:

【中文标题】Laravel 将生成的 Pdf 保存在队列中【英文标题】:Laravel Save A Generated Pdf Inside A Queue 【发布时间】:2021-10-26 00:23:36 【问题描述】:

我有一个刀片,可以将 html 转换为 pdf 并将其保存在本地,然后我使用实时 URL 获取 pdf 并将其保存在本地 然后我使用 laravel 库来合并两个 pdf,它将通过嵌入生成单个 pdf, 它之前工作正常,现在我有一个高质量的 pdf,它需要很长时间才能合并,因此,它需要一些时间并且它返回一个最大限制内存问题,

所以我尝试在队列中这样做

这是我的代码

 $ecg_link = 'https://storage.googleapis.com/staging.uk-production.appspot.com/test1111.pdf';
    
 $ecg_pdf = isset($ecg_link) ?  $ecg_link : '';

 if($ecg_pdf)
        $ecg_contents = file_get_contents($ecg_link);
    
        if (!File::exists(storage_path('app/public/screening/pdf')))
            File::makeDirectory(storage_path('app/public/screening/pdf'), 0777, true, true);
        

        \Storage::disk('public')->put('screening/pdf/'.$screening_id.'.pdf', $ecg_contents);
      
        $pdf = PDF::loadView('participants.test', 
         compact('participantdata','Allopurinol','stn_assetreview'));

        if (!File::exists(storage_path('app/public/screening/pdf/temporary-pdf')))
            File::makeDirectory(storage_path('app/public/screening/pdf/temporary-pdf'), 0777, 
        true, true);
        
        $pdf->save(storage_path('app/public/screening/pdf/temporary-pdf/'.$screening_id.'.pdf'));

        $pdfMerger = PDFMerger::init(); //Initialize the merger
        $pdfMerger->addPDF(storage_path('app/public/screening/pdf/temporary-pdf/'.$screening_id.'.pdf'), 'all');
        $pdfMerger->addPDF(storage_path('app/public/screening/pdf/'.$screening_id.'.pdf'), 'all' );
       

        $pdfMerger->merge();

        if (!File::exists(storage_path('app/public/screening/pdf/final-pdf')))
            File::makeDirectory(storage_path('app/public/screening/pdf/final-pdf'), 0777, true, true);
        
        $pdfMerger->save($screening_id.'.pdf', "download");

当我使用队列时,我无法下载 excel,因为它在队列中, 我有什么办法可以下载excel, 否则我可以通过邮件发送此 pdf 文件吗?

【问题讨论】:

【参考方案1】:

您可以使用作业,并且无论何时保存数据都可以致电YourJob::dispatch()

【讨论】:

在这种情况下,您应该邮寄或使用主管,让队列在进入队列时运行

以上是关于Laravel 将生成的 Pdf 保存在队列中的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Queue Worker、RabbitMQ 和远程生成的运行作业

用R语言以pdf格式保存文件[重复]

如何使用laravel将chartjs图表生成为pdf?

PHP - Laravel - 将 Docx 转换为 PDF

在 Laravel 刀片中生成的 PDF 中未显示字体真棒图标

生成pdf而不将其保存到磁盘然后将其显示给浏览器