YunoHost-Apps / invoiceninja5_ynh

InvoiceNinja5 package for YunoHost
https://www.invoiceninja.org/
GNU General Public License v3.0
12 stars 6 forks source link

Fresh Install: No PDFs generated. PDF-Files only 0kb #68

Closed Thunderhawk2001 closed 1 year ago

Thunderhawk2001 commented 1 year ago

Context

Describe the bug

After installing the InvoiceNinja5 app on my VPS, I logged in with the admin account. I created a test user and a test invoice with some test items. PDF preview is not working and if I click on download PDF, there is only a 0kb file downloaded.

Tried reinstalling IN5, YunoHost and even server OS multiple times, but always the same issue.

Expected behavior

PDF preview when creating a new invoice/quote/credit.... etc. and no 0kb PDF download file.

rndmh3ro commented 1 year ago

Can you please share if there is anything written in the log under storage/logs/? What's the error in the frontend?

Thunderhawk2001 commented 1 year ago

Thanks your your fast answer and sorry for my slow reply. Coivd is a **** There is no error displayed on the forntend but laravel.log has multiple entries that read like:

[2022-11-18 02:04:24] production.ERROR: Browser binary not found. Make sure you download it or set using setChromiumPath(). {"userId":1,"exception":"[object] (Beganovich\\Snappdf\\Exception\\BinaryNotFound(code: 0): Browser binary not found. Make sure you download it or set using setChromiumPath(). at /var/www/invoiceninja5/vendor/beganovich/snappdf/src/Snappdf.php:90)
[stacktrace]
#0 /var/www/invoiceninja5/vendor/beganovich/snappdf/src/Snappdf.php(237): Beganovich\\Snappdf\\Snappdf->getChromiumPath()
#1 /var/www/invoiceninja5/app/Utils/Traits/Pdf/PdfMaker.php(44): Beganovich\\Snappdf\\Snappdf->generate()
#2 /var/www/invoiceninja5/app/Jobs/Util/PreviewPdf.php(50): App\\Jobs\\Util\\PreviewPdf->makePdf()
#3 /var/www/invoiceninja5/app/Http/Controllers/PreviewController.php(304): App\\Jobs\\Util\\PreviewPdf->handle()
#4 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\PreviewController->live()
#5 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\\Routing\\Controller->callAction()
#6 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Routing/Route.php(260): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#7 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
#8 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Routing/Router.php(725): Illuminate\\Routing\\Route->run()
#9 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#10 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(126): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#11 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(62): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequest()
#12 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle()
#13 /var/www/invoiceninja5/app/Http/Middleware/QueryLogging.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#14 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\QueryLogging->handle()
#15 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#16 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#17 /var/www/invoiceninja5/app/Http/Middleware/Locale.php(46): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#18 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\Locale->handle()
#19 /var/www/invoiceninja5/app/Http/Middleware/TokenAuth.php(96): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#20 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\TokenAuth->handle()
#21 /var/www/invoiceninja5/app/Http/Middleware/SetDb.php(40): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#22 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\SetDb->handle()
#23 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#24 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Routing/Router.php(726): Illuminate\\Pipeline\\Pipeline->then()
#25 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Routing/Router.php(703): Illuminate\\Routing\\Router->runRouteWithinStack()
#26 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Routing/Router.php(667): Illuminate\\Routing\\Router->runRoute()
#27 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Routing/Router.php(656): Illuminate\\Routing\\Router->dispatchToRoute()
#28 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(190): Illuminate\\Routing\\Router->dispatch()
#29 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#30 /var/www/invoiceninja5/vendor/livewire/livewire/src/DisableBrowserCache.php(19): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#31 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Livewire\\DisableBrowserCache->handle()
#32 /var/www/invoiceninja5/app/Http/Middleware/Cors.php(25): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#33 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\Cors->handle()
#34 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#35 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Http\\Middleware\\TrustProxies->handle()
#36 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#37 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#38 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
#39 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#40 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#41 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#42 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#43 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
#44 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#45 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#46 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#47 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\\Pipeline\\Pipeline->then()
#48 /var/www/invoiceninja5/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(134): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#49 /var/www/invoiceninja5/public/index.php(57): Illuminate\\Foundation\\Http\\Kernel->handle()
#50 {main}
"} 
rndmh3ro commented 1 year ago

I digged into it: Since version 5.5.12 snappdf is not included by default anymore (see https://invoiceninja.github.io/docs/self-host-troubleshooting/#pdf-conversion-issues).

The workaround is to change into your invoiceninja directory (e.g. /var/www/invoiceninja5), then run php8.1 vendor/bin/snappdf download. This will install snappdf.

Meanwhile I will add it to the installation.

Thunderhawk2001 commented 1 year ago

Yeah, that seemed to solve the issue. Thank you a lot for this very fast solution 👍

rndmh3ro commented 1 year ago

fixed by #70