-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug]: Defaults not used when running queue:work #107
Comments
Is there some way to add a test for this? |
Not sure. I think you could borrow ideas from framework tests? https://github.com/laravel/framework/blob/10.x/tests/Queue/QueueWorkerTest.php |
Dear contributor, because this issue seems to be inactive for quite some time now, I've automatically closed it. If you feel this issue deserves some attention from my human colleagues feel free to reopen it. |
Time to reopen as still unsolved. |
Hi, I'm facing the same problem when generating the PDF under queue. If generate directly (sync), no issues. All defaults defined in app/Providers/AppServiceProvider.php boot(). |
Hi |
I just ran into the same problem. The issue shows the same behavior. Here is some minimal test code: use Spatie\LaravelPdf\Facades\Pdf;
use Spatie\Browsershot\Browsershot;
Pdf::default()->withBrowsershot(function (Browsershot $browserShot) {
logger('prepare browsershot for pdf generation'); // only logs in sync context, never in a async job
}); |
It appears there is a resolution issue with the Facade or the As a workaround, I am registering the class PdfServiceProvider extends ServiceProvider
{
#[Override]
public function register(): void
{
$this->app->bind(PdfBuilder::class, function () {
return (new PdfBuilder())->withBrowsershot(function (Browsershot $browsershot) {
// Apply customizations to Browsershot
return $browsershot;
});
});
}
} Then, I resolve the $pdfBuilder = resolve(PdfBuilder::class); // Or inject it via constructor or method
$builder = $pdfBuilder->view($contextData->viewName, ['contextData' => $contextData])
->format(Format::A4)
->portrait()
->save($fileName); |
Any solution ? happen to be laravel pdf working fine without queue , but when using queue . i got error . ProtocolError: Protocol error (Page.printToPDF): Printing failed |
How you manage to fix it ? I try this but still getting error |
What happened?
I've set defaults for the PdfBuilder in a service provider's
boot()
method as described in the docs.When a PDF gets generated in a queued job:
queue:listen
queue:work
How to reproduce the bug
database
and publish the jobs tableboot()
(e.g.Pdf::default()->margin(0.4, 0.4, 0.4, 0.4, Unit::Inch)
Pdf::view('welcome')->save('somewhere')
)queue:work
Or temporarily add a dump statement in PdfBuilder's
view()
method to check themargins
property and return early.You'll notice the margins are set when running
queue:listen
but remainnull
when runningqueue:work
.Package Version
1.4.0
PHP Version
8.3.3
Laravel Version
10.48.4
The text was updated successfully, but these errors were encountered: