Laravel Usage Examples
Learn how to use the HTML to Image API in your Laravel application using Laravel’s HTTP facade.
Setup
Add your API key to your .env
file:
HTML2IMG_API_KEY=your-api-key
HTML to Image Example
Here’s a simple example of converting HTML to an image using Laravel’s HTTP facade:
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;
public function generateImage()
{
$response = Http::withHeaders([
'X-API-Key' => env('HTML2IMG_API_KEY')
])->post('https://app.html2img.com/api/html', [
'html' => '<div style="padding: 20px; background: #f0f0f0;">
<h1>Hello from Laravel!</h1>
<p>Generated at ' . now() . '</p>
</div>',
'css' => 'h1 { color: #2563eb; } p { color: #4b5563; }',
'width' => 800,
'height' => 600
]);
if ($response->successful()) {
Storage::disk('public')->put(
'images/output.png',
$response->body()
);
return response()->json([
'success' => true,
'url' => Storage::url('images/output.png')
]);
}
return response()->json([
'success' => false,
'message' => $response->json('message', 'Unknown error')
], $response->status());
}
Screenshot Example
Taking a screenshot of a webpage is just as simple:
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;
public function takeScreenshot()
{
$response = Http::withHeaders([
'X-API-Key' => env('HTML2IMG_API_KEY')
])->post('https://app.html2img.com/api/screenshot', [
'url' => 'https://example.com',
'width' => 1200,
'height' => 800,
'dpi' => 2,
'fullpage' => true
]);
if ($response->successful()) {
Storage::disk('public')->put(
'images/screenshot.png',
$response->body()
);
return response()->json([
'success' => true,
'url' => Storage::url('images/screenshot.png')
]);
}
return response()->json([
'success' => false,
'message' => $response->json('message', 'Unknown error')
], $response->status());
}
Using with Blade Views
You can also generate images from Blade views:
public function generateFromView()
{
$html = view('emails.invoice', [
'order' => Order::find(1)
])->render();
$response = Http::withHeaders([
'X-API-Key' => env('HTML2IMG_API_KEY')
])->post('https://app.html2img.com/api/html', [
'html' => $html,
'width' => 800,
'height' => 600
]);
if ($response->successful()) {
return Storage::disk('public')->put(
'images/invoice.png',
$response->body()
);
}
return response()->json([
'error' => $response->json('message', 'Unknown error')
], $response->status());
}
Remember to run php artisan storage:link
to make the storage directory publicly accessible.