BI Dashboard to PDF Report Export
Export Grafana, Metabase, Looker, and custom BI dashboards as pixel-perfect PDF or PNG reports with CSS selector targeting.
Overview
This use case focuses on the technical challenge of turning BI tool dashboards into polished, distributable report documents. Unlike SaaS metrics reporting (which is about capturing simple dashboards for investor updates), BI report export involves rendering complex chart libraries, targeting individual panels, and composing multi-panel PDF documents.
Grafana, Metabase, Looker, and custom dashboards built with Chart.js, D3, or Highcharts require a delay parameter so the renderer waits for async data fetching and chart animation to complete before capture. Use CSS selectors to target individual panels — capture just the revenue chart or the user funnel, not the entire dashboard. Compose multiple panel captures into a single PDF document for formal distribution.
Export as PNG for Slack and presentations, or PDF for compliance and finance teams. The key technical differentiator is the delay and selector parameters: without them, you get half-rendered charts and loading spinners. Screenshotly waits for the page to reach visual stability before capture, producing pixel-perfect output even from the most complex data visualizations.
Key Benefits
Results You Can Expect
How It Works
Authenticate into the BI tool (Grafana, Metabase, Looker) with session cookies
Use the delay parameter (3-10s) to wait for chart libraries to render
Target individual panels with CSS selectors for focused captures
Export as PNG for chat/presentations or PDF for formal distribution
Schedule recurring captures and auto-distribute via email or Slack
Code Example
// Capture authenticated dashboard for reporting
const captureDashboard = async (dashboardUrl, sessionCookie) => {
const report = await fetch('https://api.screenshotly.app/screenshot', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: dashboardUrl,
device: 'desktop',
format: 'png',
fullPage: true,
cookies: [{ name: 'session', value: sessionCookie, domain: 'dashboard.company.com' }],
delay: 3000, // Wait for charts to render
}),
});
// Distribute to stakeholders
await sendToSlack('#executive-updates', report);
await sendEmail('exec-team@company.com', report);
return report;
};Frequently Asked Questions
How do I automate daily or weekly report screenshot distribution?
Use a cron job or serverless function (AWS Lambda, Vercel Cron) to trigger API calls on a schedule. Capture each dashboard URL, then distribute via email, Slack, or Teams using their respective APIs.
How do I handle dashboards with charts that take time to render?
Use the delay parameter (3-5 seconds) to wait for chart libraries like Chart.js, D3, or Highcharts to finish rendering. For complex dashboards, use waitForSelector targeting a specific chart element.
Can I capture multiple dashboard panels into a single report?
Use fullPage: true to capture the entire dashboard in one image. Alternatively, capture individual panels using the selector or clip parameter and combine them into a composite report image or PDF.
What's the best format for stakeholder reports — PNG or PDF?
PDF is best for formal reports distributed via email since it includes metadata and prints well. PNG works better for Slack/Teams messages and embedding in presentations. Capture both formats for maximum flexibility.
Want a step-by-step walkthrough?
Read: Invoice & Report Generation Guide →Ready to automate report generation?
Get started with 100 free screenshots. No credit card required.
Related Use Cases
Thumbnails
Generate thumbnail previews for link aggregators, directories, and bookmarking services. Create visual previews at any size.
Convert any web page or URL to a pixel-perfect PDF via API. Handles modern CSS, JavaScript rendering, and full-page capture.
Link Previews
Build link preview services for messaging apps, social platforms, and content aggregators. Generate rich previews for any URL.