From c5a05efdc24caa045e6e6199d7699acd89fc877c Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 31 Oct 2022 07:37:52 +1100 Subject: [PATCH] Merge PDFs --- app/Http/Controllers/InvoiceController.php | 16 ++++++++++++++++ app/Services/PdfMaker/PdfMerge.php | 4 +++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index 8050c433af..5aec198f38 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -40,6 +40,7 @@ use App\Models\Invoice; use App\Models\Quote; use App\Models\TransactionEvent; use App\Repositories\InvoiceRepository; +use App\Services\PdfMaker\PdfMerge; use App\Transformers\InvoiceTransformer; use App\Transformers\QuoteTransformer; use App\Utils\Ninja; @@ -588,6 +589,21 @@ class InvoiceController extends BaseController } + if($action == 'merge' && auth()->user()->can('view', $invoices->first())){ + + $paths = $invoices->map(function ($invoice){ + return $invoice->service()->getInvoicePdf(); + }); + + $merge = (new PdfMerge($paths->toArray()))->run(); + + + return response()->streamDownload(function () use ($merge) { + echo ($merge); + }, 'print.pdf', ['Content-Type' => 'application/pdf']); + + } + /* * Send the other actions to the switch */ diff --git a/app/Services/PdfMaker/PdfMerge.php b/app/Services/PdfMaker/PdfMerge.php index 67d53b1071..e4b2f50137 100644 --- a/app/Services/PdfMaker/PdfMerge.php +++ b/app/Services/PdfMaker/PdfMerge.php @@ -12,7 +12,9 @@ namespace App\Services\PdfMaker; +use Illuminate\Support\Facades\Storage; use \setasign\Fpdi\Fpdi; +use setasign\Fpdi\PdfParser\StreamReader; class PdfMerge { @@ -25,7 +27,7 @@ class PdfMerge $pdf = new FPDI(); foreach ($this->file_paths as $file) { - $pageCount = $pdf->setSourceFile($file); + $pageCount = $pdf->setSourceFile(StreamReader::createByString(Storage::get($file))); for ($i = 0; $i < $pageCount; $i++) { $tpl = $pdf->importPage($i + 1, '/MediaBox'); $pdf->addPage();