diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index 68581c10..c9a98667 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -73,7 +73,7 @@ namespace PHPSTORM_META { 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pdf.driver' => \App\Services\PDFService::class, + 'pdf.driver' => \App\Services\Pdf\PdfService::class, 'pipeline' => \Illuminate\Pipeline\Pipeline::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\SyncQueue::class, @@ -156,7 +156,7 @@ namespace PHPSTORM_META { 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pdf.driver' => \App\Services\PDFService::class, + 'pdf.driver' => \App\Services\Pdf\PdfService::class, 'pipeline' => \Illuminate\Pipeline\Pipeline::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\SyncQueue::class, @@ -239,7 +239,7 @@ namespace PHPSTORM_META { 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pdf.driver' => \App\Services\PDFService::class, + 'pdf.driver' => \App\Services\Pdf\PdfService::class, 'pipeline' => \Illuminate\Pipeline\Pipeline::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\SyncQueue::class, @@ -322,7 +322,7 @@ namespace PHPSTORM_META { 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pdf.driver' => \App\Services\PDFService::class, + 'pdf.driver' => \App\Services\Pdf\PdfService::class, 'pipeline' => \Illuminate\Pipeline\Pipeline::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\SyncQueue::class, @@ -405,7 +405,7 @@ namespace PHPSTORM_META { 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pdf.driver' => \App\Services\PDFService::class, + 'pdf.driver' => \App\Services\Pdf\PdfService::class, 'pipeline' => \Illuminate\Pipeline\Pipeline::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\SyncQueue::class, @@ -488,7 +488,7 @@ namespace PHPSTORM_META { 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pdf.driver' => \App\Services\PDFService::class, + 'pdf.driver' => \App\Services\Pdf\PdfService::class, 'pipeline' => \Illuminate\Pipeline\Pipeline::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\SyncQueue::class, @@ -571,7 +571,7 @@ namespace PHPSTORM_META { 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pdf.driver' => \App\Services\PDFService::class, + 'pdf.driver' => \App\Services\Pdf\PdfService::class, 'pipeline' => \Illuminate\Pipeline\Pipeline::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\SyncQueue::class, @@ -654,7 +654,7 @@ namespace PHPSTORM_META { 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pdf.driver' => \App\Services\PDFService::class, + 'pdf.driver' => \App\Services\Pdf\PdfService::class, 'pipeline' => \Illuminate\Pipeline\Pipeline::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\SyncQueue::class, @@ -737,7 +737,7 @@ namespace PHPSTORM_META { 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pdf.driver' => \App\Services\PDFService::class, + 'pdf.driver' => \App\Services\Pdf\PdfService::class, 'pipeline' => \Illuminate\Pipeline\Pipeline::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\SyncQueue::class, @@ -820,7 +820,7 @@ namespace PHPSTORM_META { 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pdf.driver' => \App\Services\PDFService::class, + 'pdf.driver' => \App\Services\Pdf\PdfService::class, 'pipeline' => \Illuminate\Pipeline\Pipeline::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\SyncQueue::class, @@ -903,7 +903,7 @@ namespace PHPSTORM_META { 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pdf.driver' => \App\Services\PDFService::class, + 'pdf.driver' => \App\Services\Pdf\PdfService::class, 'pipeline' => \Illuminate\Pipeline\Pipeline::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\SyncQueue::class, diff --git a/app/Facades/PDF.php b/app/Facades/Pdf.php similarity index 91% rename from app/Facades/PDF.php rename to app/Facades/Pdf.php index b0c769d3..e2e05a2a 100644 --- a/app/Facades/PDF.php +++ b/app/Facades/Pdf.php @@ -7,7 +7,7 @@ use Illuminate\Support\Facades\Facade; /** * @method static \Psr\Http\Message\ResponseInterface loadView(string $template) */ -class PDF extends Facade +class Pdf extends Facade { protected static function getFacadeAccessor() { diff --git a/app/Http/Controllers/V1/Admin/Report/CustomerSalesReportController.php b/app/Http/Controllers/V1/Admin/Report/CustomerSalesReportController.php index d1e7727b..2230c33d 100644 --- a/app/Http/Controllers/V1/Admin/Report/CustomerSalesReportController.php +++ b/app/Http/Controllers/V1/Admin/Report/CustomerSalesReportController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\V1\Admin\Report; +use App\Facades\Pdf; use App\Http\Controllers\Controller; use App\Models\Company; use App\Models\CompanySetting; @@ -11,7 +12,6 @@ use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; -use PDF; class CustomerSalesReportController extends Controller { @@ -85,7 +85,7 @@ class CustomerSalesReportController extends Controller 'currency' => $currency, ]); - $pdf = PDF::loadView('app.pdf.reports.sales-customers'); + $pdf = Pdf::loadView('app.pdf.reports.sales-customers'); if ($request->has('preview')) { return view('app.pdf.reports.sales-customers'); diff --git a/app/Http/Controllers/V1/Admin/Report/ExpensesReportController.php b/app/Http/Controllers/V1/Admin/Report/ExpensesReportController.php index b7b6d678..f2e4b51e 100644 --- a/app/Http/Controllers/V1/Admin/Report/ExpensesReportController.php +++ b/app/Http/Controllers/V1/Admin/Report/ExpensesReportController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\V1\Admin\Report; +use App\Facades\Pdf; use App\Http\Controllers\Controller; use App\Models\Company; use App\Models\CompanySetting; @@ -11,7 +12,6 @@ use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; -use PDF; class ExpensesReportController extends Controller { @@ -70,7 +70,7 @@ class ExpensesReportController extends Controller 'to_date' => $to_date, 'currency' => $currency, ]); - $pdf = PDF::loadView('app.pdf.reports.expenses'); + $pdf = Pdf::loadView('app.pdf.reports.expenses'); if ($request->has('preview')) { return view('app.pdf.reports.expenses'); diff --git a/app/Http/Controllers/V1/Admin/Report/ItemSalesReportController.php b/app/Http/Controllers/V1/Admin/Report/ItemSalesReportController.php index 828fe5d0..870b9cb0 100644 --- a/app/Http/Controllers/V1/Admin/Report/ItemSalesReportController.php +++ b/app/Http/Controllers/V1/Admin/Report/ItemSalesReportController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\V1\Admin\Report; +use App\Facades\Pdf; use App\Http\Controllers\Controller; use App\Models\Company; use App\Models\CompanySetting; @@ -11,7 +12,6 @@ use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; -use PDF; class ItemSalesReportController extends Controller { @@ -70,7 +70,7 @@ class ItemSalesReportController extends Controller 'to_date' => $to_date, 'currency' => $currency, ]); - $pdf = PDF::loadView('app.pdf.reports.sales-items'); + $pdf = Pdf::loadView('app.pdf.reports.sales-items'); if ($request->has('preview')) { return view('app.pdf.reports.sales-items'); diff --git a/app/Http/Controllers/V1/Admin/Report/ProfitLossReportController.php b/app/Http/Controllers/V1/Admin/Report/ProfitLossReportController.php index 0afa5ed3..e16cde9c 100644 --- a/app/Http/Controllers/V1/Admin/Report/ProfitLossReportController.php +++ b/app/Http/Controllers/V1/Admin/Report/ProfitLossReportController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\V1\Admin\Report; +use App\Facades\Pdf; use App\Http\Controllers\Controller; use App\Models\Company; use App\Models\CompanySetting; @@ -12,7 +13,6 @@ use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; -use PDF; class ProfitLossReportController extends Controller { @@ -78,7 +78,7 @@ class ProfitLossReportController extends Controller 'to_date' => $to_date, 'currency' => $currency, ]); - $pdf = PDF::loadView('app.pdf.reports.profit-loss'); + $pdf = Pdf::loadView('app.pdf.reports.profit-loss'); if ($request->has('preview')) { return view('app.pdf.reports.profit-loss'); diff --git a/app/Http/Controllers/V1/Admin/Report/TaxSummaryReportController.php b/app/Http/Controllers/V1/Admin/Report/TaxSummaryReportController.php index 3abe37b3..8f5af38b 100644 --- a/app/Http/Controllers/V1/Admin/Report/TaxSummaryReportController.php +++ b/app/Http/Controllers/V1/Admin/Report/TaxSummaryReportController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\V1\Admin\Report; +use App\Facades\Pdf; use App\Http\Controllers\Controller; use App\Models\Company; use App\Models\CompanySetting; @@ -11,7 +12,6 @@ use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; -use PDF; class TaxSummaryReportController extends Controller { @@ -73,7 +73,7 @@ class TaxSummaryReportController extends Controller 'currency' => $currency, ]); - $pdf = PDF::loadView('app.pdf.reports.tax-summary'); + $pdf = Pdf::loadView('app.pdf.reports.tax-summary'); if ($request->has('preview')) { return view('app.pdf.reports.tax-summary'); diff --git a/app/Providers/PDFServiceProvider.php b/app/Providers/PDFServiceProvider.php deleted file mode 100644 index f9642c9a..00000000 --- a/app/Providers/PDFServiceProvider.php +++ /dev/null @@ -1,13 +0,0 @@ - PDFService::class, - ]; -} diff --git a/app/Providers/PdfServiceProvider.php b/app/Providers/PdfServiceProvider.php new file mode 100644 index 00000000..acb852b0 --- /dev/null +++ b/app/Providers/PdfServiceProvider.php @@ -0,0 +1,13 @@ + PdfService::class, + ]; +} diff --git a/app/Services/EstimateService.php b/app/Services/EstimateService.php index 4e897a57..56e08ed0 100644 --- a/app/Services/EstimateService.php +++ b/app/Services/EstimateService.php @@ -4,7 +4,7 @@ namespace App\Services; use App; use App\Facades\Hashids; -use App\Facades\PDF; +use App\Facades\Pdf; use App\Mail\SendEstimateMail; use App\Models\Company; use App\Models\CompanySetting; @@ -197,6 +197,6 @@ class EstimateService return view($templatePath); } - return PDF::loadView($templatePath); + return Pdf::loadView($templatePath); } } diff --git a/app/Services/InvoiceService.php b/app/Services/InvoiceService.php index fdd181ae..e2223740 100644 --- a/app/Services/InvoiceService.php +++ b/app/Services/InvoiceService.php @@ -4,7 +4,7 @@ namespace App\Services; use App; use App\Facades\Hashids; -use App\Facades\PDF; +use App\Facades\Pdf; use App\Mail\SendInvoiceMail; use App\Models\Company; use App\Models\CompanySetting; @@ -262,6 +262,6 @@ class InvoiceService return view($templatePath); } - return PDF::loadView($templatePath); + return Pdf::loadView($templatePath); } } diff --git a/app/Services/PDFDrivers/GotenbergPDFDriver.php b/app/Services/PDFDrivers/GotenbergPDFDriver.php deleted file mode 100644 index 73b7c5fa..00000000 --- a/app/Services/PDFDrivers/GotenbergPDFDriver.php +++ /dev/null @@ -1,60 +0,0 @@ -response = $stream; - } - - public function stream(string $filename = 'document.pdf'): Response - { - $output = $this->response->getBody(); - - return new Response($output, 200, [ - 'Content-Type' => 'application/pdf', - 'Content-Disposition' => 'inline; filename="'.$filename.'"', - ]); - } - - public function output(): string - { - return $this->response->getBody()->getContents(); - } -} - -class GotenbergPDFDriver -{ - public function loadView(string $viewname): GotenbergPDFResponse - { - $papersize = explode(' ', config('pdf.connections.gotenberg.papersize')); - if (count($papersize) != 2) { - throw new \InvalidArgumentException('Invalid Gotenberg Papersize specified'); - } - - $host = config('pdf.connections.gotenberg.host'); - $request = Gotenberg::chromium($host) - ->pdf() - ->margins(0, 0, 0, 0) // Margins can be set using CSS - ->paperSize($papersize[0], $papersize[1]) - ->html( - Stream::string( - 'document.html', - view($viewname)->render(), - ) - ); - $result = Gotenberg::send($request); - - return new GotenbergPDFResponse($result); - } -} diff --git a/app/Services/PDFService.php b/app/Services/PDFService.php deleted file mode 100644 index 766f003c..00000000 --- a/app/Services/PDFService.php +++ /dev/null @@ -1,47 +0,0 @@ - App::make('dompdf.wrapper'), - 'gotenberg' => new GotenbergPDFDriver, - default => throw new \InvalidArgumentException('Invalid PDFDriver requested') - }; - } -} - -class PDFService -{ - public static function loadView(string $template) - { - $driver = config('pdf.driver'); - - return PDFDriverFactory::create($driver)->loadView($template); - } -} diff --git a/app/Services/PaymentService.php b/app/Services/PaymentService.php index feda346d..0a1e3565 100644 --- a/app/Services/PaymentService.php +++ b/app/Services/PaymentService.php @@ -3,13 +3,13 @@ namespace App\Services; use App\Facades\Hashids; +use App\Facades\Pdf; use App\Mail\SendPaymentMail; use App\Models\Company; use App\Models\CompanySetting; use App\Models\ExchangeRateLog; use App\Models\Invoice; use App\Models\Payment; -use Barryvdh\DomPDF\Facade\Pdf as PDF; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Collection; @@ -184,7 +184,7 @@ class PaymentService return view('app.pdf.payment.payment'); } - return PDF::loadView('app.pdf.payment.payment'); + return Pdf::loadView('app.pdf.payment.payment'); } public function generateFromTransaction($transaction): Payment diff --git a/app/Services/Pdf/GotenbergPdfDriver.php b/app/Services/Pdf/GotenbergPdfDriver.php new file mode 100644 index 00000000..c7db051a --- /dev/null +++ b/app/Services/Pdf/GotenbergPdfDriver.php @@ -0,0 +1,32 @@ +pdf() + ->margins(0, 0, 0, 0) + ->paperSize($papersize[0], $papersize[1]) + ->html( + Stream::string( + 'document.html', + view($viewname)->render(), + ) + ); + $result = Gotenberg::send($request); + + return new GotenbergPdfResponse($result); + } +} diff --git a/app/Services/Pdf/GotenbergPdfResponse.php b/app/Services/Pdf/GotenbergPdfResponse.php new file mode 100644 index 00000000..49a3f1e4 --- /dev/null +++ b/app/Services/Pdf/GotenbergPdfResponse.php @@ -0,0 +1,31 @@ +response = $stream; + } + + public function stream(string $filename = 'document.pdf'): Response + { + $output = $this->response->getBody(); + + return new Response($output, 200, [ + 'Content-Type' => 'application/pdf', + 'Content-Disposition' => 'inline; filename="'.$filename.'"', + ]); + } + + public function output(): string + { + return $this->response->getBody()->getContents(); + } +} diff --git a/app/Services/Pdf/PdfDriver.php b/app/Services/Pdf/PdfDriver.php new file mode 100644 index 00000000..4bb4926e --- /dev/null +++ b/app/Services/Pdf/PdfDriver.php @@ -0,0 +1,8 @@ + App::make('dompdf.wrapper'), + 'gotenberg' => new GotenbergPdfDriver, + default => throw new \InvalidArgumentException('Invalid PdfDriver requested') + }; + } +} diff --git a/app/Services/Pdf/PdfService.php b/app/Services/Pdf/PdfService.php new file mode 100644 index 00000000..e174a22a --- /dev/null +++ b/app/Services/Pdf/PdfService.php @@ -0,0 +1,13 @@ +loadView($template); + } +} diff --git a/app/Services/Pdf/ResponseStream.php b/app/Services/Pdf/ResponseStream.php new file mode 100644 index 00000000..cbb7b73a --- /dev/null +++ b/app/Services/Pdf/ResponseStream.php @@ -0,0 +1,12 @@ +