invoice = $invoice; $this->company = $company; $this->contact = $contact; } public function handle() { MultiDB::setDB($this->company->db); App::setLocale($this->contact->preferredLocale()); $this->invoice->load('client'); $path = 'public/'.$this->invoice->client->client_hash.'/invoices/'; $file_path = $path.$this->invoice->number.'.pdf'; $modern = new Modern(); $designer = new Designer($modern, $this->invoice->client->getSetting('invoice_variables')); //get invoice design $html = $this->generateInvoiceHtml($designer->build($this->invoice)->getHtml(), $this->invoice, $this->contact); //todo - move this to the client creation stage so we don't keep hitting this unnecessarily Storage::makeDirectory($path, 0755); //\Log::error($html); //create pdf $pdf = $this->makePdf(null, null, $html); $path = Storage::put($file_path, $pdf); return $path; } /** * Returns a PDF stream * * @param string $header Header to be included in PDF * @param string $footer Footer to be included in PDF * @param string $html The HTML object to be converted into PDF * * @return string The PDF string */ private function makePdf($header, $footer, $html) { return Browsershot::html($html) //->showBrowserHeaderAndFooter() //->headerHtml($header) //->footerHtml($footer) ->deviceScaleFactor(1) ->showBackground() ->waitUntilNetworkIdle(true) ->pdf(); //->margins(10,10,10,10) //->savePdf('test.pdf'); } }