From b593cb0ff318aaba19e0acea0f7bb9ca23fdc23b Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 27 Nov 2020 13:02:05 +1100 Subject: [PATCH 01/11] Fixes for preview PDF using phantom js --- app/Http/Controllers/PreviewController.php | 6 ++++++ app/Utils/PhantomJS/Phantom.php | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/app/Http/Controllers/PreviewController.php b/app/Http/Controllers/PreviewController.php index 5993b5279270..005d2bc83445 100644 --- a/app/Http/Controllers/PreviewController.php +++ b/app/Http/Controllers/PreviewController.php @@ -121,6 +121,12 @@ class PreviewController extends BaseController ->design($design) ->build(); + //if phantom js...... inject here.. + if (config('ninja.phantomjs_pdf_generation')) { + return (new Phantom)->convertHtmlToPdf($maker->getCompiledHTML(true)); + } + + //else $file_path = PreviewPdf::dispatchNow($maker->getCompiledHTML(true), auth()->user()->company()); return response()->download($file_path)->deleteFileAfterSend(true); diff --git a/app/Utils/PhantomJS/Phantom.php b/app/Utils/PhantomJS/Phantom.php index c69511751323..63ac615f0497 100644 --- a/app/Utils/PhantomJS/Phantom.php +++ b/app/Utils/PhantomJS/Phantom.php @@ -84,6 +84,15 @@ class Phantom return $file_path; } + public function convertHtmlToPdf($html) + { + // https://phantomjscloud.com/api/browser/v2/a-demo-key-with-low-quota-per-ip-address/?request=%7Bcontent:%22%3Chtml%3E%3Ch1%3Eboo%3C/h2%3E%3C/html%3E%22,renderType:%22pdf%22%7D + + $key = config('ninja.phantomjs_key'); + $phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%7Bcontent:%22{$html}%22,renderType:%22pdf%22%7D"; + return CurlUtils::get($phantom_url); + } + public function displayInvitation(string $entity, string $invitation_key) { $key = $entity.'_id'; From a99f871fb7799e18eaacb72f91b5a0474725a4fb Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 27 Nov 2020 13:23:02 +1100 Subject: [PATCH 02/11] Phantom adjustment for preview --- app/Http/Controllers/PreviewController.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Http/Controllers/PreviewController.php b/app/Http/Controllers/PreviewController.php index 005d2bc83445..fc6dc25c079e 100644 --- a/app/Http/Controllers/PreviewController.php +++ b/app/Http/Controllers/PreviewController.php @@ -198,6 +198,10 @@ class PreviewController extends BaseController ->design($design) ->build(); + if (config('ninja.phantomjs_pdf_generation')) { + return (new Phantom)->convertHtmlToPdf($maker->getCompiledHTML(true)); + } + $file_path = PreviewPdf::dispatchNow($maker->getCompiledHTML(true), auth()->user()->company()); DB::rollBack(); From 2d80e124570645ff0466f501d665155d1c777760 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 27 Nov 2020 13:24:13 +1100 Subject: [PATCH 03/11] Phantom adjustment for preview --- app/Http/Controllers/PreviewController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Http/Controllers/PreviewController.php b/app/Http/Controllers/PreviewController.php index fc6dc25c079e..c45534fd427a 100644 --- a/app/Http/Controllers/PreviewController.php +++ b/app/Http/Controllers/PreviewController.php @@ -20,6 +20,7 @@ use App\Models\InvoiceInvitation; use App\Services\PdfMaker\Design; use App\Services\PdfMaker\PdfMaker; use App\Utils\HtmlEngine; +use App\Utils\PhantomJS\Phantom; use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesInvoiceHtml; use Illuminate\Support\Facades\DB; From 3cdd5bc544c037bc08db3bd9c69b0666f502e8c2 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 27 Nov 2020 13:29:46 +1100 Subject: [PATCH 04/11] Phantom adjustment for preview --- app/Utils/PhantomJS/Phantom.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/Utils/PhantomJS/Phantom.php b/app/Utils/PhantomJS/Phantom.php index 63ac615f0497..c2a24fa62c85 100644 --- a/app/Utils/PhantomJS/Phantom.php +++ b/app/Utils/PhantomJS/Phantom.php @@ -86,11 +86,15 @@ class Phantom public function convertHtmlToPdf($html) { - // https://phantomjscloud.com/api/browser/v2/a-demo-key-with-low-quota-per-ip-address/?request=%7Bcontent:%22%3Chtml%3E%3Ch1%3Eboo%3C/h2%3E%3C/html%3E%22,renderType:%22pdf%22%7D $key = config('ninja.phantomjs_key'); $phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%7Bcontent:%22{$html}%22,renderType:%22pdf%22%7D"; - return CurlUtils::get($phantom_url); + $pdf = CurlUtils::get($phantom_url); + + $response = Response::make($pdf, 200); + $response->header('Content-Type', 'application/pdf'); + + return $response; } public function displayInvitation(string $entity, string $invitation_key) From b5840f8e4510cdfd9a9c5303b417eda308011493 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 27 Nov 2020 13:30:37 +1100 Subject: [PATCH 05/11] Phantom adjustment for preview --- app/Utils/PhantomJS/Phantom.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Utils/PhantomJS/Phantom.php b/app/Utils/PhantomJS/Phantom.php index c2a24fa62c85..a94c342160cd 100644 --- a/app/Utils/PhantomJS/Phantom.php +++ b/app/Utils/PhantomJS/Phantom.php @@ -24,6 +24,7 @@ use App\Utils\Traits\MakesHash; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; +use Illuminate\Support\Facades\Response; class Phantom { From e410a99f91154a1ec5fcc335f45cdb91a6b61ea9 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 27 Nov 2020 13:31:21 +1100 Subject: [PATCH 06/11] Phantom adjustment for preview --- app/Utils/PhantomJS/Phantom.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Utils/PhantomJS/Phantom.php b/app/Utils/PhantomJS/Phantom.php index a94c342160cd..7f9f5deb2e73 100644 --- a/app/Utils/PhantomJS/Phantom.php +++ b/app/Utils/PhantomJS/Phantom.php @@ -91,7 +91,7 @@ class Phantom $key = config('ninja.phantomjs_key'); $phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%7Bcontent:%22{$html}%22,renderType:%22pdf%22%7D"; $pdf = CurlUtils::get($phantom_url); - +info($pdf); $response = Response::make($pdf, 200); $response->header('Content-Type', 'application/pdf'); From 1ab56a53a2c55112a2ffb9e4b420cf4615fd916f Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 27 Nov 2020 19:55:50 +1100 Subject: [PATCH 07/11] version bump --- VERSION.txt | 2 +- config/ninja.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index a478fd27a62e..e4714c19a557 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -5.0.25 \ No newline at end of file +5.0.26 \ No newline at end of file diff --git a/config/ninja.php b/config/ninja.php index b07123bea9bf..db67ee0b78df 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -12,7 +12,7 @@ return [ 'require_https' => env('REQUIRE_HTTPS', true), 'app_url' => rtrim(env('APP_URL', ''), '/').'/', 'app_domain' => env('APP_DOMAIN', ''), - 'app_version' => '5.0.25', + 'app_version' => '5.0.26', 'minimum_client_version' => '5.0.16', 'terms_version' => '1.0.1', 'api_secret' => env('API_SECRET', false), From 5a3c93bb3cf568cecad1912ab1b920bd18f63678 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 27 Nov 2020 20:14:01 +1100 Subject: [PATCH 08/11] Temp routes" --- .../ClientPortal/TempRouteController.php | 34 +++++++++++++++++++ app/Utils/PhantomJS/Phantom.php | 10 ++++-- routes/client.php | 2 ++ 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 app/Http/Controllers/ClientPortal/TempRouteController.php diff --git a/app/Http/Controllers/ClientPortal/TempRouteController.php b/app/Http/Controllers/ClientPortal/TempRouteController.php new file mode 100644 index 000000000000..00fd28068e5b --- /dev/null +++ b/app/Http/Controllers/ClientPortal/TempRouteController.php @@ -0,0 +1,34 @@ + $hash]); + $key = config('ninja.phantomjs_key'); - $phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%7Bcontent:%22{$html}%22,renderType:%22pdf%22%7D"; + $phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%url:%22{$url}%22,renderType:%22pdf%22%7D"; $pdf = CurlUtils::get($phantom_url); -info($pdf); + $response = Response::make($pdf, 200); $response->header('Content-Type', 'application/pdf'); diff --git a/routes/client.php b/routes/client.php index 083befda64c3..782833015705 100644 --- a/routes/client.php +++ b/routes/client.php @@ -19,6 +19,8 @@ Route::get('view/{entity_type}/{invitation_key}', 'ClientPortal\EntityViewContro Route::get('view/{entity_type}/{invitation_key}/password', 'ClientPortal\EntityViewController@password')->name('client.entity_view.password'); Route::post('view/{entity_type}/{invitation_key}/password', 'ClientPortal\EntityViewController@handlePassword'); +Route::get('tmp_pdf/{hash}', 'ClientPortal\TempRouteController@index')->name('tmp_pdf'); + Route::get('client/key_login/{contact_key}', 'ClientPortal\ContactHashLoginController@login')->name('client.contact_login')->middleware(['contact_key_login']); //todo implement domain DB From 78e5a911753ffd18c5c6d9460520f7a2d14d0f0a Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 27 Nov 2020 20:17:47 +1100 Subject: [PATCH 09/11] Temp routes" --- app/Utils/PhantomJS/Phantom.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Utils/PhantomJS/Phantom.php b/app/Utils/PhantomJS/Phantom.php index 491adea71169..005b71b462cc 100644 --- a/app/Utils/PhantomJS/Phantom.php +++ b/app/Utils/PhantomJS/Phantom.php @@ -25,6 +25,7 @@ use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; use Illuminate\Support\Facades\Response; +use Illuminate\Support\Facades\Cache; class Phantom { From 3a78326a8379b9374b58faf498b3cd490c8234fc Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 27 Nov 2020 20:19:23 +1100 Subject: [PATCH 10/11] Temp routes" --- app/Utils/PhantomJS/Phantom.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/Utils/PhantomJS/Phantom.php b/app/Utils/PhantomJS/Phantom.php index 005b71b462cc..78485c68be26 100644 --- a/app/Utils/PhantomJS/Phantom.php +++ b/app/Utils/PhantomJS/Phantom.php @@ -77,8 +77,6 @@ class Phantom $phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%7Burl:%22{$url}%22,renderType:%22pdf%22%7D"; $pdf = CurlUtils::get($phantom_url); - //info($pdf); - Storage::makeDirectory($path, 0775); $instance = Storage::disk(config('filesystems.default'))->put($file_path, $pdf); @@ -92,9 +90,9 @@ class Phantom Cache::put($hash, $html, 300); $url = route('tmp_pdf', ['hash' => $hash]); - +info($url); $key = config('ninja.phantomjs_key'); - $phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%url:%22{$url}%22,renderType:%22pdf%22%7D"; + $phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%7Burl:%22{$url}%22,renderType:%22pdf%22%7D"; $pdf = CurlUtils::get($phantom_url); $response = Response::make($pdf, 200); From 9f4979095b9265f99535d721a8e9f023c7c32ea1 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 27 Nov 2020 20:21:18 +1100 Subject: [PATCH 11/11] Temp routes" --- app/Http/Controllers/ClientPortal/TempRouteController.php | 8 ++++---- app/Utils/PhantomJS/Phantom.php | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/ClientPortal/TempRouteController.php b/app/Http/Controllers/ClientPortal/TempRouteController.php index 00fd28068e5b..d29a2c432c19 100644 --- a/app/Http/Controllers/ClientPortal/TempRouteController.php +++ b/app/Http/Controllers/ClientPortal/TempRouteController.php @@ -25,10 +25,10 @@ class TempRouteController extends Controller */ public function index(string $hash) { - - $html = Cache::get($hash); + $data = []; + $data['html'] = Cache::get($hash); + + return view('pdf.html', $data); - return view('pdf.html', $html); - } } diff --git a/app/Utils/PhantomJS/Phantom.php b/app/Utils/PhantomJS/Phantom.php index 78485c68be26..6691142a042c 100644 --- a/app/Utils/PhantomJS/Phantom.php +++ b/app/Utils/PhantomJS/Phantom.php @@ -88,7 +88,7 @@ class Phantom { $hash = Str::random(32); Cache::put($hash, $html, 300); - + $url = route('tmp_pdf', ['hash' => $hash]); info($url); $key = config('ninja.phantomjs_key');