使用laravel批量打印PDF文件

时间:2019-07-31 14:19:33

标签: laravel pdf

我有一个程序,可以在学生文件上打印单个PDF。我正在使用Laravel 5.7中的niklasravnsborg / laravel-pdf软件包进行此操作。它之所以有用,是因为我可以将视图中的pdf流传输到浏览器,然后从那里进行打印。

现在,我想在一天结束时批量打印PDF,而不是一个一个地批量打印。我怎样才能做到这一点?软件包存储库中没有与此相关的文档。

我考虑过几种方法:一种,将每个PDF保存为图像文件,然后在一天结束时尝试打印该文件夹中的所有文件。如果这样做,我将如何打印该文件夹中的所有文件?

下一步:有人知道一种将新PDF附加到包含所有先前循环的pdf的变量的方法吗? 例如:

$finalpdf;

$students = Student::all();
foreach($students as $student){
  $pdf = PDF::loadView('pdf.document', $student);

  $finalpdf .+ $pdf; //i know this line doesn't work, but how to alter it?

    return $pdf->save('document.pdf');
}

1 个答案:

答案 0 :(得分:0)

经过几天的玩耍,希望此解决方案将来对某人有所帮助。我使用了另一个名为“ lara pdf合并”的软件包。通过将我的文件写入保存目标,将这些文件添加到合并的文件,然后在下载后删除已保存的文件,我可以获得我的功能。这是我的控制器代码:

use PDF;
use Illuminate\Filesystem\Filesystem;
use LynX39\LaraPdfMerger\Facades\PdfMerger;


public function batchPrint(){
  $pdfMerger = PDFMerger::init();
  $i = 0;

  $students = Student::whereDate('updated_at', Carbon::today('America/Los_Angeles'))->get();
    foreach ($students as $student) {
      $pdf = PDF::loadView('printTables', compact('student'));
      $pdf->save('pdf/document'.$i.'.pdf');
      $pdfMerger->addPDF('pdf/document'.$i.'.pdf');
      $i++;
    }

  $pdfMerger->merge();
  $pdfMerger->save("file_name.pdf", "browser");

  $file = new Filesystem;
  $file->cleanDirectory('pdf');

}