Skip to content

Reporting.IReport

IReport is the contract implemented by Reporting.ReportBase (and, by inheritance, any concrete report/letter subclass) that defines the full lifecycle of a letter/report: build its XML content, render it to PDF bytes, and print, distribute, or save the rendered output. It exists so that consumers can depend on a stable report/letter abstraction rather than a concrete implementation.*

Purpose

  • Define the create/render/print/distribute/save lifecycle that every concrete report/letter type must support.
  • Define the output-profile switching contract (default vs. draft/watermark) used before rendering.

Context

  • Namespace: SAIF.Services.Printing.Reporting
  • Assembly/package: SAIF.Services.Printing (embedded, front-end referenced)

Public members

Member Signature Purpose
Create(overwrite) Function Create(overwrite As Boolean) As Object Builds (or rebuilds, if overwrite) the report/letter's XML document tree. Implemented by ReportBase as an overridable base with subclass override points; see Render a letter or report.
Render(overwrite) Function Render(overwrite As Boolean) As Boolean Renders the built XML into PDF bytes; see Render a letter or report.
Print(printer, overwrite) Function Print(printer As String, overwrite As Boolean) As Boolean Renders (if needed) and prints the report/letter; see Print a letter or report.
Distribute(overwrite) Function Distribute(overwrite As Boolean) As Boolean Builds XML (if needed) and distributes the report/letter; see Distribute a letter or report.
Save(overwrite) Function Save(overwrite As Boolean) As Boolean Renders (if needed) and writes the resulting bytes to disk; see Save a rendered report to disk.
SetDefaultProfile() Sub SetDefaultProfile() Switches to the standard PDF output profile; see Switch output profile.
SetDraftProfile() Sub SetDraftProfile() Switches to the draft-watermark PDF output profile; see Switch output profile.

Behavioral notes

  • The only confirmed implementer in the scanned repository is Reporting.ReportBase; the only confirmed concrete subclass is the test-only MyReport in SAIF.Services.Printing.Tests. Whether production code elsewhere implements this interface directly is unknown.**

Constraints and usage notes

  • Consumers depending on IReport rather than ReportBase directly gain the ability to substitute alternative implementations, though none besides ReportBase was found in this repository.*

Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • SAIF.Services.Printing\Reporting\IReport.vb
  • SAIF.Services.Printing\SAIF.Services.Printing.Tests\MyReport.vb