PHP code example of eduardoribeirodev / browsershot
1. Go to this page and download the library: Download eduardoribeirodev/browsershot library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
eduardoribeirodev / browsershot example snippets
'browsershot' => [
'chrome_path' => env('BROWSERSHOT_CHROME_PATH', '/usr/bin/chromium-browser'),
],
use EduardoRibeiroDev\Browsershot\Facades\Browsershot;
$pdf = Browsershot::make(view('invoice', $data))
->pdf()
->generate();
$screenshot = Browsershot::make('<h1>Hello World</h1>')
->png()
->generate();
return Browsershot::make(view('report'))
->a4()
->pdf()
->download('monthly-report.pdf');
// From a View object
Browsershot::make(view('documents.invoice', $data));
// From a view name (with optional data)
Browsershot::make('documents.invoice', $data);
// From a URL
Browsershot::make('https://example.com');
// From a raw HTML string
Browsershot::make('<div>Content here</div>');
Browsershot::make($view)->size(1920, 1080)->generate();
Browsershot::make($view)->size(210, 297, 'mm')->generate(); // A4
Browsershot::make($view)->center(100, 50)->size(800, 600)->generate();
Browsershot::make($view)->clip(0, 0, 1200, 800)->generate();
// 2× resolution (Retina)
Browsershot::make($view)->scale(2)->generate();
Browsershot::make($view)
->size(1920, 1080)
->aspectRatio('16:9') // string form
->generate();
Browsershot::make($view)
->size(1200, 900)
->aspectRatio(4 / 3) // float form
->generate();
Browsershot::make($view)->format('A4')->generate();
Browsershot::make($view)->format('Letter', 2)->generate(); // 2× scale
Browsershot::make($view)->a4()->pdf()->download('doc.pdf');
Browsershot::make($view)->letter()->landscape()->pdf()->generate();
Browsershot::make($view)->a4()->landscape()->pdf()->generate();
Browsershot::make($view)->a4()->portrait()->pdf()->generate();
Browsershot::make($view)->a4()->margin(10)->pdf()->generate();
Browsershot::make($view)->margins(10, 15, 10, 15)->pdf()->generate();
Browsershot::make($view)
->marginTop(20)
->marginBottom(20)
->pdf()
->generate();
Browsershot::make($view)->pdf()->generate();
Browsershot::make($view)->png()->generate();
Browsershot::make($view)->jpeg()->generate();
Browsershot::make($view)->webp()->generate();
Browsershot::make($view)->extension('png')->generate(); // equivalent
// Single pages
Browsershot::make($view)->pdf()->pages(1, 3, 5)->generate();
// Ranges (passed as arrays)
Browsershot::make($view)->pdf()->pages([1, 3], [5, 7])->generate();
// Mixed
Browsershot::make($view)->pdf()->pages(1, [3, 5], 8)->generate();
Browsershot::make($view)->noSandbox()->generate();
// Re-enable (not usually needed)
Browsershot::make($view)->noSandbox(false)->generate();
use Spatie\Browsershot\Browsershot;
Browsershot::make($view)
->modifyBrowsershotUsing(function (Browsershot $browsershot) {
$browsershot->waitUntilNetworkIdle()->timeout(60);
})
->pdf()
->generate();
$content = Browsershot::make($view)->pdf()->generate();
Storage::put('file.pdf', $content);
return Browsershot::make($view)->pdf()->download('invoice-2025.pdf');
return Browsershot::make($view)->pdf()->download('invoice'); // → invoice.pdf
return Browsershot::make($view)->pdf()->download(); // → document-{timestamp}.pdf
// Default disk
Browsershot::make($view)->pdf()->save('invoices/invoice-123.pdf');
// Specific disk
Browsershot::make($view)->pdf()->save('reports/report.pdf', 'public');
$base64 = Browsershot::make($view)->png()->toBase64();
echo "<img src='data:image/png;base64,{$base64}' />";
public function generateInvoice(Invoice $invoice)
{
return Browsershot::make('invoices.template', [
'invoice' => $invoice,
'customer' => $invoice->customer,
'items' => $invoice->items,
])
->a4()
->margin(15)
->pdf()
->download("invoice-{$invoice->number}.pdf");
}
public function generateSocialImage(Post $post)
{
Browsershot::make(view('social.og-image', compact('post')))
->size(1200, 630) // Open Graph dimensions
->scale(2) // Retina quality
->png()
->save("social/post-{$post->id}.png");
return Storage::url("social/post-{$post->id}.png");
}
public function generateCertificate(User $user, Course $course)
{
return Browsershot::make('certificates.template', [
'userName' => $user->name,
'courseName' => $course->title,
'completionDate' => now()->format('F d, Y'),
])
->size(1920, 1357)
->scale(2)
->pdf()
->download("certificate-{$user->id}-{$course->id}.pdf");
}
public function generateThumbnail(string $htmlContent)
{
$thumbnail = Browsershot::make($htmlContent)
->size(800, 600)
->jpeg()
->toBase64();
return response()->json([
'thumbnail' => "data:image/jpeg;base64,{$thumbnail}",
]);
}
public function generateMonthlyReports(Collection $departments)
{
$departments->each(function ($department) {
Browsershot::make('reports.monthly', compact('department'))
->a4()
->landscape()
->pdf()
->save("reports/{$department->slug}-" . now()->format('Y-m') . ".pdf");
});
return "Generated {$departments->count()} reports";
}
public function captureWithCustomOptions()
{
return Browsershot::make('https://example.com')
->size(1920, 1080)
->png()
->modifyBrowsershotUsing(function ($b) {
$b->waitUntilNetworkIdle()->timeout(30);
})
->download('screenshot.png');
}
use EduardoRibeiroDev\Browsershot\Facades\Browsershot;
use Illuminate\Support\Facades\Storage;
test('can generate pdf from view', function () {
Storage::fake('local');
$result = Browsershot::make('test-view')
->a4()
->pdf()
->save('test.pdf');
expect($result)->toBeTrue();
Storage::assertExists('test.pdf');
});
test('can generate high resolution screenshot', function () {
$content = Browsershot::make('<h1>Test</h1>')
->size(1920, 1080)
->scale(2)
->png()
->generate();
expect($content)->toBeString()->not->toBeEmpty();
});
Browsershot::make($view)->noSandbox()->generate();
ini_set('memory_limit', '512M');
Browsershot::make($largeView)->pdf()->generate();