A rendering extension is a component or module of a report server that transforms report data and layout information into a device-specific format. SQL Server Reporting Services includes seven rendering extensions: HTML, Excel, Word, CSV or Text, XML, Image, and PDF. You can create additional rendering extensions to generate reports in other formats.
The following table describes the rendering extensions that are included with Reporting Services.
XML
Renders a report in XML. The report opens in a browser. Additional transformations applied to this XML output may be a cost effective way of avoiding developing your own rendering extension.
CSV
Renders a report in comma-delimited format. The report opens in a viewing tool associated with CSV file formats.
IMAGE
Renders a report in a page-oriented format. The format is shown as TIFF in the Export drop-down of the report toolbar.
PDF
Renders a report in the Adobe Acrobat Reader. The format is shown as Acrobat (PDF) File in the Export drop-down of the report toolbar.
EXCEL
Renders a report in Microsoft Excel.
WORD
Render a report in Microsoft Word.
HTML 4.0 (part of the HTML rendering extension)
HTML is the format used to initially render the report. If your browser support HTML 4.0, that is the format that is used. Otherwise, HTML 3.2 is used.
MHTML (part of the HTML rendering extension)
Renders a report in MHTML. The report opens in Internet Explorer. The format is shown as Web Archive in the Export drop-down of the report toolbar.
NULL
Does not render a report to a specific format. This rendering extension is useful for placing reports in cache. Null rendering should be used in conjunction with a scheduled execution or delivery.
For more information on the recommended formats and their uses, see Exporting Reports.
Each of the rendering extensions implemented by Microsoft and shipped with Reporting Services uses a common set of interfaces. This ensures that each extension implements comparable functionality and reduces the complexity of the rendering code in the core of the report server.
When a report is processed, the result is a publicly exposed object model known as the Rendering Object Model (ROM). The Rendering Object Model is a collection of classes that define the contents, layout, and data of a report that has been processed. The ROM is available to developers who wish to design, develop, and deploy custom rendering extensions for Reporting Services. ROM is produced when the report server processes a report's XML definition along with the user-defined report data. When processing is complete, the public object model is used by a rendering extension to define the output of the report. The ROM's available public classes are defined in the Microsoft.ReportingServices.ReportRendering namespace.
Before you decide to create a custom rendering extension, you should evaluate simpler alternatives. You can:
Writing a custom rendering extension is difficult. A rendering extension must typically support all possible combinations of report elements and requires that you implement hundreds of classes, interfaces, methods, and properties. If you must render a report in a format that is not included with Reporting Services and decide to write your own managed code implementation of a rendering extension, the rendering extension code must implement the Microsoft.ReportingServices.ReportRendering.IRenderingExtension interface, which is required by the report server.
For supplemental documentation and whitepapers on Reporting Services, see the latest technical resources at the Reporting Services Web site.
Be careful if you intend to do any type of automated post-processing to SSRS 2008 generated PDF files. The Microsoft PDF rendering extension incorrectly places a whitespace character between the "stream" keyword and end-of-line markers in the PDF output files. This means that it should be "stream\r\n" and not "stream \r\n" as it gets produced by SSRS 2008. These files will open fine in a PDF viewer, but will cause parsing errors in many PDF service utilities (i.e. merging/splitting tools).
A bug report for this exists on Microsoft Connect that indicates that this problem will be "fixed" in the "next major release."
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=373767