[]
Portable Document Format (PDF), is a format recommended for printing and for preserving formatting. You can use the PDFRenderingExtension to render your report in this format. With the PDF rendering extension, you can use features such as font linking, digital signatures, and end user-defined characters (EUDC). These features are only available in the Professional Edition of ActiveReports.
ActiveReports offers a number of options to control how reports render to PDF.
Property | Description |
|---|---|
Set the value that appears for application in the Document Properties dialog of the PDF viewer application. | |
Enter the name of the author to appear in the Document Properties dialog of the PDF viewer application. | |
Set to True to position the document's window in the center of the screen. | |
Specifies how the document is displayed when opened. FullScreen mode displays the document with no menu bar, window controls, or any other window visible. | |
Set to True to display text you enter in the Title property. When set to False it displays the name of the PDF file. | |
Indicates the path of the PDF document to be inserted at the end of the rendering output. | |
Indicates the path of the PDF document to be inserted at the beginning of the rendering output. | |
Set the horizontal resolution of the rendered PDF file. | |
Set the vertical resolution of the rendered PDF file. | |
Select how the fonts used in the report should be embedded in the PDF document. Note: By default, all fonts get embedded in the exported PDF document. | |
Determines whether the document is encrypted or not. Note: If Encrypt is set to False, permissions and passwords have no effect. | |
The last page of the report to render. The default value is the value for StartPage,that is,0. | |
Gets or sets a comma-delimited string of font families to locate missing glyphs from the original font. | |
True to resize the document’s window to fit the size of the first displayed page. Default value: false. | |
True to hide the viewer application’s menu bar when the document is active. Default value: false. | |
True to hide the viewer application’s toolbars when the document is active. Default value: false. | |
True to hide user interface elements in the document’s window (such as scroll bars and navigation controls), leaving only the document’s contents displayed. Default value: false. | |
Interpolation value of images. Allows enabling and disabling image interpolation, when exporting the file to PDF. | |
Keywords associated with the document. | |
Gets or sets the semicolon-delimited string of the font families to be embedded in the PDF document. | |
The owner password that can be entered in the reader, which permits full access to the document regardless of the specified user permissions. | |
The page height value, in inches, to set for the report. You must include an integer or decimal value followed by "in" (for example, 1in). This value overrides the report's original settings. | |
The page width value, in inches, to set for the report. You must include an integer or decimal value followed by "in" (for example, 1in). This value overrides the report's original settings. | |
Gets or sets the value that indicates whether to use pagination in the exported PDF document. | |
Specifies the user permissions for the document. Permissions can be combined using a comma between values. | |
Specifies layout mode to be used for PDF documents. | |
Gets or sets the value indicating whether the document should be printed after it is open. | |
Gets or sets the PDF print preset dialog. | |
Determines whether PDF pages are fit to the selected paper size or not. | |
The first page of the report to render. A value of 0 indicates that all pages are rendered. | |
The subject of the document. | |
The title of the document. | |
The user password that can be entered in the reader. If this value is left empty, the user will not be prompted for a password, however, the user will be restricted by the specified permissions. | |
Set the output PDF version. The supported versions are: PDF-1.2 | |
Specify the degree of angle for the watermark text on the PDF document. Valid values range from 0 to 359, where 0 is horizontal, left to right. | |
Select a color for the watermark text on the PDF document. The default value for the watermark color is gray, but you can select any Web, System, or Custom color. | |
Set the font to use for the watermark on the PDF document. | |
Set the font size to use for the watermark on the PDF document. | |
Set the font style to use for the watermark on the PDF document. | |
Specify whether to print a report with a watermark on it via a printer or a Microsoft print to PDF. The default value is False. | |
Enter text (i.e. CONFIDENTIAL) to use as the watermark on the PDF document. |
ActiveReports allows you to preset the printing properties for PDF report exports using the PrintPresets class. This prepopulates the print settings in the Print dialog box. Please see Use PDF Printing Presets for more information.
Note: The print preset properties are only available with the Professional Edition license. An evaluation message is displayed when used with the Standard Edition license.
Property | Description |
|---|---|
Specify scaling for the printable area. You can select Default to shrink to the printable area, or you can select None for the actual size. | |
Specify the duplex mode of the printer. For the best results with the duplex option, the selected printer should support duplex printing. You can choose from the following values, * Simplex: Prints on one side of the paper. This is the default value. * Duplex (Flip on long edge): Prints on both sides of the paper with paper flip on the long edge. * Duplex (Flip on short edge): Prints on both sides of the paper with paper flip on the short edge. | |
Determines the output tray based on PDF page size, rather than page setting options. This option is useful when printing PDFs with multiple page sizes, where different sized output trays are available. By default, this option is set to False. | |
Specify the range of page numbers 1-3 or 1, 2, 3. | |
Specify the number of copies to print. You can select any number of copies from 2 to 5, or select Default to specify a single copy. |
Note: These properties are available in PDF version 1.7 or higher. The PageScaling property is supported in PDF version 1.6.
PDF is considered the best format for printing and it also supports interactive features like Document Map, Bookmarks, and Hyperlinks. However, in case you have any data hidden (like in a drill-down report) at the time of rendering, it does not show up in the output. Therefore, it is recommended to expand all toggle items prior to rendering.
In Page and RDLX reports, you can use the InputField report control. This control provides support for editable fields in an exported PDF report file where the InputField’s value can be modified.
There are two types of InputField - Text and Checkbox, which you can set in the InputType property. Each type has its own set of properties: the Text type of the InputField control gets the set of properties of the TextBox control. If the Checkbox type is selected, then the new control inherits the set of properties of the CheckBox control.
You can generate PDFs with tagging on the report content by setting the AccessibleDescription property of the report controls: Bullet, Barcode, Chart, Image, Line, Map, Shape, Sparkline, and FormattedText controls; and all custom report items. The PDF versions that support tagged PDFs conforming with the PDF/UA standard are PDF/A-1a, PDF/A-2a, PDF/A-2u, PDF/A-3a, PDF/A-3u, and PDF/UA-1.
When rendering Page or RDL reports to PDF, you can enrich the output document with advanced metadata, file attachments, and custom properties. These features are configured via the Settings object passed to the rendering method.
You can embed Extensible Metadata Platform (XMP) data into the PDF. This allows you to adhere to specific metadata standards (schemas) such as Dublin Core or Adobe PDF schemas.
Usage: Add items to the AdditionalMetadata collection.
Namespaces: The API supports standard namespaces like PurlOrg (Dublin Core), NsAdobeComPdf, and NsAdobeComXap.
You can embed external files (such as raw data files, related text documents, or images) directly inside the PDF container.
Usage: Add AttachmentInfo objects to the Attachments collection.
Properties: Define the Name (filename), Description, and Content (byte array) for the file.
Similar to standard properties, you can add user-defined key-value pairs to the document properties.
Usage: Add CustomProperty items to the CustomProperties collection.
Benefit: These values are visible in the "Custom" tab of the PDF viewer's properties dialog and can be used by indexing systems.
The following example demonstrates how to configure these settings when rendering a Page Report (.rdlx) to PDF using the PDF Rendering Extension.
// 1. Prepare the output path
var outputFileName = Path.ChangeExtension(Path.GetTempFileName(), ".pdf");
// 2. Load the report definition (Page Report)
using (var stream = GetType().Assembly.GetManifestResourceStream("Reports.PriceHistory.rdlx"))
using (var reader = new StreamReader(stream))
{
var rpt = new GrapeCity.ActiveReports.PageReport(reader);
// 3. Create PDF Settings
var pdfSettings = new GrapeCity.ActiveReports.Export.Pdf.Page.Settings();
// A. Add Additional Metadata (XMP)
// specific schemas used for archiving and indexing systems
pdfSettings.AdditionalMetadata.AddRange(new List<GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataInfo>
{
// Dublin Core: Standard for library/document cataloging
new GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataInfo
{
Namespace = GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataNamespace.PurlOrg,
Key = "creator",
Value = "Senior Analyst: John Doe"
},
// Adobe PDF Schema: Used by PDF readers for search
new GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataInfo
{
Namespace = GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataNamespace.NsAdobeComPdf,
Key = "Keywords",
Value = "price-history, invoices, 2025, q3-analysis"
},
// XMP Basic Schema: Technical details about creation
new GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataInfo
{
Namespace = GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataNamespace.NsAdobeComXap,
Key = "CreatorTool",
Value = "ActiveReports Reporting Engine v18"
}
});
// B. Add File Attachments
// Scenario: Embedding the raw data (CSV) so users can verify calculations
var csvContent = "Date,Item,Price\n2025-01-01,Widget A,10.00\n2025-01-02,Widget B,15.50";
pdfSettings.Attachments.Add(new GrapeCity.ActiveReports.Export.Pdf.AttachmentInfo
{
Name = "RawData_2025.csv",
Description = "Source dataset for the price analysis graph",
Content = Encoding.UTF8.GetBytes(csvContent)
});
// C. Add Custom Properties (Custom Tab)
pdfSettings.CustomProperties.AddRange(new List<GrapeCity.ActiveReports.Export.Pdf.CustomProperty>
{
new GrapeCity.ActiveReports.Export.Pdf.CustomProperty
{
Name = "FiscalYear",
Value = "2025"
},
new GrapeCity.ActiveReports.Export.Pdf.CustomProperty
{
Name = "DocumentType",
Value = "PriceHistoryAnalysis"
},
new GrapeCity.ActiveReports.Export.Pdf.CustomProperty
{
Name = "Sensitivity",
Value = "Confidential"
}
});
// 4. Render the Report
var pdfExport = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension();
var fileStreamProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(
new DirectoryInfo(Path.GetTempPath()),
Path.GetFileNameWithoutExtension(outputFileName));
rpt.Document.Render(pdfExport, fileStreamProvider, pdfSettings);
}' 1. Prepare the output path
Dim outputFileName = Path.ChangeExtension(Path.GetTempFileName(), ".pdf")
' 2. Load the report definition (Page Report)
Using stream = GetType().Assembly.GetManifestResourceStream("Reports.PriceHistory.rdlx")
Using reader As New StreamReader(stream)
Dim rpt As New GrapeCity.ActiveReports.PageReport(reader)
' 3. Create PDF Settings
Dim pdfSettings As New GrapeCity.ActiveReports.Export.Pdf.Page.Settings()
' A. Add Additional Metadata (XMP)
pdfSettings.AdditionalMetadata.AddRange(New List(Of GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataInfo) From {
New GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataInfo With {
.Namespace = GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataNamespace.PurlOrg,
.Key = "creator",
.Value = "Senior Analyst: John Doe"
},
New GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataInfo With {
.Namespace = GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataNamespace.NsAdobeComPdf,
.Key = "Keywords",
.Value = "price-history, invoices, 2025, q3-analysis"
},
New GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataInfo With {
.Namespace = GrapeCity.ActiveReports.Export.Pdf.AdditionalMetadataNamespace.NsAdobeComXap,
.Key = "CreatorTool",
.Value = "ActiveReports Reporting Engine v18"
}
})
' B. Add File Attachments
Dim csvContent = "Date,Item,Price" & vbCrLf & "2025-01-01,Widget A,10.00" & vbCrLf & "2025-01-02,Widget B,15.50"
pdfSettings.Attachments.Add(New GrapeCity.ActiveReports.Export.Pdf.AttachmentInfo With {
.Name = "RawData_2025.csv",
.Description = "Source dataset for the price analysis graph",
.Content = Encoding.UTF8.GetBytes(csvContent)
})
' C. Add Custom Properties
pdfSettings.CustomProperties.AddRange(New List(Of GrapeCity.ActiveReports.Export.Pdf.CustomProperty) From {
New GrapeCity.ActiveReports.Export.Pdf.CustomProperty With {
.Name = "FiscalYear",
.Value = "2025"
},
New GrapeCity.ActiveReports.Export.Pdf.CustomProperty With {
.Name = "DocumentType",
.Value = "PriceHistoryAnalysis"
},
New GrapeCity.ActiveReports.Export.Pdf.CustomProperty With {
.Name = "Sensitivity",
.Value = "Confidential"
}
})
' 4. Render the Report
Dim pdfExport As New GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension()
Dim fileStreamProvider As New GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(
New DirectoryInfo(Path.GetTempPath()),
Path.GetFileNameWithoutExtension(outputFileName))
rpt.Document.Render(pdfExport, fileStreamProvider, pdfSettings)
End Using
End UsingThe NeverEmbedFonts property is ignored, so all fonts of a report are embedded into the PDF document.
The Security.Encrypt property is ignored and the PDF export behaves as if this property is always set to False.
The OnlyForPrint property is ignored and the PDF export behaves as if this property is always set to False.
The DocumentToAddBeforeReport and DocumentToAddAfterReport properties of the PDF Rendering Extension settings are ignored.
Transparent images lose their transparency when exported to PDF/A-1.
External hyperlinks are exported as plain text.
The following steps provide an example of rendering a report in PDF format.
Create a new or open an existing Windows Forms App in Visual Studio project.
Go to the Project Explorer, right-click the project and select Add > New Item.
Select ActiveReports 20 Standalone Report > Add and choose a report type, RDLX, RDLX Dashboard, or Page report and then click Finish.
Add a reference to MESCIUS.ActiveReports.Export.Pdf package in the project.
On the Form.cs or Form.vb that opens, double-click the title bar to create the Form_Load event.
Add the following code inside the Form_Load event.
' Provide the Page report you want to render.
Dim rptPath As New IO.FileInfo("..\..\..\Report1.rdlx")
Dim pageReport As New GrapeCity.ActiveReports.PageReport(rptPath)
' Create an output directory.
Dim outputDirectory As New System.IO.DirectoryInfo("C:\MyPDF")
outputDirectory.Create()
' Provide settings for your rendering output.
Dim pdfSetting As New GrapeCity.ActiveReports.Export.Pdf.Page.Settings()
' Set the rendering extension and render the report.
Dim pdfRenderingExtension As New GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension()
Dim outputProvider As New GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory,System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name))
' Overwrite output file if it already exists
outputProvider.OverwriteOutputFile = True
pageReport.Document.Render(pdfRenderingExtension, outputProvider, pdfSetting)// Provide the Page report you want to render.
System.IO.FileInfo rptPath = new System.IO.FileInfo(@"..\..\..\Report1.rdlx");
GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport(rptPath);
// Create an output directory.
System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyPDF");
outputDirectory.Create();
// Provide settings for your rendering output.
GrapeCity.ActiveReports.Export.Pdf.Page.Settings pdfSetting = new GrapeCity.ActiveReports.Export.Pdf.Page.Settings();
// Set the rendering extension and render the report.
GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension pdfRenderingExtension = new
GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension();
GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory,
System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));
// Overwrite output file if it already exists
outputProvider.OverwriteOutputFile = true;
pageReport.Document.Render(pdfRenderingExtension, outputProvider, pdfSetting);