---
title: IReport
summary: API reference for IReport.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-07-24
library: SAIF.Services.Printing
reference_type: package
---

# IReport

`IReport` defines the public contract implemented by report objects in this library. The interface standardizes how callers create report XML, render output, print, distribute, save files, and inspect any collected errors.

## Purpose
- Expose a consistent report-processing workflow to consumers of the printing library.
- Surface both report content state and transport helpers needed by implementations.

## Context
- Namespace: `SAIF.Services.Printing.Reporting`
- Assembly/package: `SAIF.Services.Printing`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `Errors` | `ReadOnly Property Errors() As IList(Of ErrorDetail)` | Returns the collection of processing errors recorded by the implementation. |
| `xPrint` | `ReadOnly Property xPrint() As clsPrint` | Returns the `clsPrint` helper used for xPression transport operations. |
| `DestinationFileName` | `Property DestinationFileName() As String` | Gets or sets the output file path used by `Save`. |
| `OutputProfile` | `Property OutputProfile() As String` | Gets or sets the xPression output profile. |
| `ReportPackage` | `Property ReportPackage() As String` | Gets or sets the xPression report package name. |
| `ReportFile` | `ReadOnly Property ReportFile() As Byte()` | Returns the rendered report bytes cached by the implementation. |
| `ReportXml` | `ReadOnly Property ReportXml() As XDesignXDocument` | Returns the current report XML document. |
| `Create` | `Function Create(Optional overwrite As Boolean = False) As XDesignXDocument` | Creates or refreshes the report XML document. |
| `Render` | `Function Render(Optional overwrite As Boolean = False) As Boolean` | Renders the report into bytes. |
| `Print` | `Function Print(printer As String, Optional overwrite As Boolean = False) As Boolean` | Prints the report to a supplied printer. |
| `Distribute` | `Function Distribute(Optional overwrite As Boolean = False) As Boolean` | Distributes the report through the underlying transport implementation. |
| `Save` | `Function Save(Optional overwrite As Boolean = False) As Boolean` | Saves rendered report bytes to the configured destination file. |
| `SetDefaultProfile` | `Sub SetDefaultProfile()` | Selects the standard PDF output profile. |
| `SetDraftProfile` | `Sub SetDraftProfile()` | Selects the draft watermark PDF output profile. |

## Behavioral notes
- Implementations separate XML creation (`Create`) from rendering (`Render`) so callers can prepare report data before transport operations.
- `SetDefaultProfile` and `SetDraftProfile` align with [BR-005](../../business-rules.md#br-005-output-profiles-switch-between-standard-and-draft-pdf-modes).

## Constraints and usage notes
- Implementations must supply a report package name and report XML for render or distribution operations to succeed.
- `ReportFile` and `Errors` expose implementation state and may change after each workflow step.

## Sources
- `Services\SAIF.Services.Printing\Reporting\IReport.vb`
