A Fabric or Premium capacity, provisioned and billed every month, so that an application on a Premium Per User licence can produce one PDF every five minutes. That ratio comes straight from Microsoft's own throttling documentation. Where reporting already lives in Power BI the capacity is already committed and one more export is marginal, but a .NET application that only needs markup turned into a PDF is buying the whole capacity for a job IronPDF 2026.8.1 does in-process.
Full disclosure. We build IronPDF at Iron Software, and this read looks at where Power BI Paginated Reports' capacity requirement and asynchronous export job cost a team, and where IronPDF returns the bytes in the same request.
What RDL Pagination and Accessible PDF Buy
Two things here are strong on their own terms.
RDL carries two decades of engineering behind it, the same report definition language that ran SQL Server Reporting Services, so pixel-precise pagination, repeating headers, and multi-column layouts work because that is what the format was designed to do. Paginated reports exist for the documents that have to print identically every time. IronPDF paginates the same documents through CSS page rules, inside the process that already holds the data.
The export surface goes past PDF too. Alongside PPTX, XLSX, DOCX, CSV, XML, MHTML, and six image formats, the service exports Accessible PDF, meeting PDF/UA requirements through a format setting rather than a compliance project. Any team under an accessibility obligation knows what building that support from scratch costs. Subscriptions add scheduled recurring distribution, a report mailing itself to a list every Monday with no code in the path at all, which a rendering library has no equivalent for and is not trying to build. For an organisation already holding a capacity for its dashboards, all of this runs on governed infrastructure inside an existing Microsoft Entra tenant, with no separate report server to patch and no second authentication story to wire up. That tenant is the ceiling of what the service reaches, because IronPDF produces the same accessible PDF without one.
Which Licence Do You Need Before the First PDF?
Paginated reports do not have a list price the way a NuGet package does. Licensing is layered across four thresholds, and collapsing them into one sentence is how most comparisons get this wrong.
- Authoring is unlicensed: building a report and publishing it to your own My Workspace requires neither Pro nor Premium Per User, and Microsoft's documentation is explicit that this first step is unlicensed.
- Sharing takes a seat: publishing to a shared workspace so colleagues can find it requires a Pro or PPU licence for the publisher.
- Viewing depends on the tier: a user without a Pro or PPU licence can open a paginated report only if the workspace sits on a Fabric capacity of F64 or higher, or a legacy Premium P1 or higher. Below that tier, every viewer needs their own Pro or PPU licence.
-
Programmatic export demands a capacity, always: Microsoft's paginated report export documentation states that the report must reside in a workspace backed by a Premium, Embedded, or Fabric capacity, and that the
exportToFileAPI has limited support in Premium Per User.
That last phrase repays a careful reading, because the sibling documentation for non-paginated Power BI reports is harsher still, stating outright that exporting one of those with exportToFile is not supported for Premium Per User. Paginated reports get the softer treatment, and the softer treatment is one request per five-minute window, with anything more returning a 429. Granting Microsoft that distinction does not change the shape of the commitment, because an ISV exporting on demand needs a capacity SKU rather than a developer licence, and Microsoft does not publish flat list pricing for Fabric capacities, so the number comes from a region-specific and term-specific calculator rather than a page you can budget against.
Three operational constraints follow from the same architecture. Export is asynchronous, so no call returns PDF bytes in the same request. exportToFile starts a job, the application polls a status endpoint honouring the RetryAfter header, and eventually receives a download URL valid for 24 hours, with the whole export capped at 60 minutes to match the life of the user access token. Throttling caps volume at 250 requests per minute without a service principal profile and 25 per minute with one, against a ceiling of 250 concurrent paginated render requests. Every export runs within a Microsoft Entra tenant, which means an ISV shipping document generation inside software on a customer's own infrastructure has no path here at all, because the capability does not exist outside the tenant boundary. That is what shared multi-tenant infrastructure costs, and a reasonable trade when the reporting estate is already there. It is a poor trade when a download-your-invoice button has to become a job queue and a polling loop, which is the case IronPDF answers with an async in-process render and a batch pipeline.
On security the exposure is dependency-shaped. No CVE names paginated reports or exportToFile in the current cloud service. The records in this area attach to Power BI Report Server, the separate on-premises product, which is listed among the affected products for CVE-2019-1332 alongside SQL Server 2017 and 2019 Reporting Services. Clearing the cloud service of a CVE history is fair, and it moves the risk instead of removing it, since data and rendering both sit within Microsoft's infrastructure, so a throttling change or an outage on Microsoft's side becomes part of your document path in a way it never is when IronPDF renders inside your own process.
When Does the Request Turn Into a File?
Scoped strictly to turning application data into a file.
| Capability (document output only) | Power BI Paginated Reports | IronPDF |
|---|---|---|
| Produces PDF | Yes, plus Accessible PDF (PDF/UA) | Yes, plus PDF/UA and PDF/A |
| How the call behaves |
exportToFile starts an asynchronous job, then you poll |
ChromePdfRenderer.RenderHtmlAsPdf returns a PdfDocument
|
| Fixed, pixel-precise pagination | Yes, RDL's core strength | Yes, through CSS page rules |
| Report design tool required | Power BI Report Builder, Windows only | 0, the template is HTML the app already has |
| Infrastructure required | Entra tenant plus Premium, Embedded, or Fabric capacity | The application process |
| Runs air-gapped or on a customer's own servers | No | Yes |
Table 1. Document output only, paginated reports against IronPDF, excluding interactive reporting and dashboarding.
Both columns end at a PDF. What separates them is everything between the request and the file.
IronPDF Never Leaves the Process
For the application-generated document, meaning an invoice, a statement, a contract, or a shipping manifest, the render happens in the process that already holds the data.
using IronPdf;
var statementRenderer = new ChromePdfRenderer();
// Print media so the template's page rules apply, not its screen layout
statementRenderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
using PdfDocument statement = statementRenderer.RenderHtmlAsPdf(BuildStatementHtml(customer, transactions));
using PdfDocument packet = PdfDocument.Merge(PdfDocument.FromFile("cover.pdf"), statement);
packet.SaveAs($"statement-{customer.Id}.pdf");
IronPDF returns the bytes from one call in the same request, with no capacity provisioned, no tenant in the path, and no polling loop between the button and the download. Rendering options cover page geometry, headers, and footers, and an MVC template can go over as a Razor view rather than a rendered string.
Self-service reporting an analyst builds alone, with parameter prompts, drill-through, and a subscription mailing a distribution list, has no counterpart here. Power BI Paginated Reports' ceiling is not capability but reach, because it ends at the tenant boundary, and a document produced for a customer running your software on their own hardware sits outside it. Teams needing both keep both, and the renderer-side pattern is worked through end to end if that split is on the table. IronPDF has a free trial if you want to time an in-process render against your current export job before deciding.
If you are exporting paginated reports on a schedule today, what does your capacity cost per document once the monthly bill is divided by the number of PDFs it produced? Post it in the comments, since that number seems to surprise people who have never worked it out.
Power BI, Microsoft Fabric, and Microsoft Entra are Microsoft trademarks and this piece is not affiliated with Microsoft. The licensing, throttling, export, and CVE details above are drawn from Microsoft Learn and NVD as they stood at the time of writing. Fabric capacity pricing varies by region and commitment term, so check Microsoft's calculator rather than any figure quoted secondhand. If a detail has changed since, correct us in the comments.
Top comments (0)