# Print using Print Methods

ActiveReports provides access to Print methods to enable printing of page and Banded Layout reports. Learn the multiple ways to access these methods.

## Content

ActiveReports provides access to Print methods to enable printing of Page and Section Reports. You can access Print methods in any of the following ways:

* [Viewer.Print method (using the Viewer control)](/activereportsnet/docs/v20.1/developers/printing/print-methods#viewerprint-method)
* [Print methods in SectionDocument or PageDocument](/activereportsnet/docs/v20.1/developers/printing/print-methods#print-methods-in-sectiondocument-or-pagedocument)
* [Print methods in the PrintExtension class](/activereportsnet/docs/v20.1/developers/printing/print-methods#print-methods-in-the-printextension-class)

### Printing System Selection 

Starting with ActiveReports 20, the default printing engine for desktop viewers is Direct2D. This applies to:

* Page/RDLX reports
* Section Reports running in CrossPlatform compatibility mode

Direct2D provides improved performance, modern vector rendering, and no dependency on GDI printer drivers.
If your application relies on GDI-specific printing features, such as:

* `PrinterSettings.PrinterResolutions`
* `PrintDocument.QueryPageSettings`
* Other GDI-only printer properties or events

you must switch the printing engine to **GDI** through the application configuration.

### Viewer.Print method

The code sample illustrates how to access the print method using the Viewer control.

You can use the [Print](/activereportsnet/api/v20.1/MESCIUS.ActiveReports.Viewer.Win/GrapeCity.ActiveReports.Viewer.Win.Viewer.html) method of the [Viewer](/activereportsnet/api/v20.1/MESCIUS.ActiveReports.Viewer.Win/GrapeCity.ActiveReports.Viewer.Win.Viewer.html) class to print a report loaded in the Viewer control. Make sure that the report is loaded completely before Print is executed.

```vbnet
Viewer1.Print(True, True, True)
```

```csharp
viewer1.Print(true, true, true);
```

### Print methods in SectionDocument or PageDocument

SectionDocument and PageDocument types have Print methods that can be used directly on the document object. The following code samples illustrate how to access the print methods that can be used directly on the document object.

>type=note
> **Note**: The **Print** method is implemented as an extension method of the [PrintExtension.Print](/activereportsnet/api/v20.1/MESCIUS.ActiveReports.Viewer.Common/GrapeCity.ActiveReports.PrintExtension.html) method, which is present in the GrapeCity.ActiveReports namespace of [GrapeCity.ActiveReports](/activereportsnet/api/v20.1/MESCIUS.ActiveReports.Viewer.Common/GrapeCity.ActiveReports.html) assembly.
> 
> In order to access **Print** method through SectionDocument or PageDocument class, you need to add GrapeCity.ActiveReports.Viewer.Common reference to the project. Also, as mentioned in the code, make sure that you add a reference for the [GrapeCity.ActiveReports](/activereportsnet/api/v20.1/MESCIUS.ActiveReports.Viewer.Common/GrapeCity.ActiveReports.html) namespace in your project using Imports (Visual Basic.NET) or using (C#) statement.

### Section Report

```vbnet
Imports GrapeCity.ActiveReports
```

```vbnet
Dim rpt = New SectionReport1()
rpt.Run(False)
Dim sectionDocument = rpt.Document
sectionDocument.Print(True, True, False)
```

```csharp
using GrapeCity.ActiveReports;
```

```csharp
var rpt = new SectionReport1();
rpt.Run(false);
var sectionDocument = rpt.Document;
sectionDocument.Print(true, true, false);
```

### Page Report

```vbnet
Imports GrapeCity.ActiveReports
```

```vbnet
Dim file_name As String = "..\..\PageReport1.rdlx"
Dim pageReport As New GrapeCity.ActiveReports.PageReport(New System.IO.FileInfo(file_name))
Dim pageDocument As New GrapeCity.ActiveReports.Document.PageDocument(pageReport)
pageDocument.Print(True, True, False)
```

```csharp
using GrapeCity.ActiveReports;
```

```csharp
string file_name = @"..\..\PageReport1.rdlx";
GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(file_name));
GrapeCity.ActiveReports.Document.PageDocument pageDocument = new GrapeCity.ActiveReports.Document.PageDocument(pageReport);
pageDocument.Print(true, true, false);
```

### Print methods in the PrintExtension class

You can use the [Print](/activereportsnet/api/v20.1/MESCIUS.ActiveReports.Viewer.Common/GrapeCity.ActiveReports.PrintExtension.html) method of the [PrintExtension](/activereportsnet/api/v20.1/MESCIUS.ActiveReports.Viewer.Common/GrapeCity.ActiveReports.PrintExtension.html) class to print a report loaded in the Viewer control. Make sure that the report is loaded completely before print is executed. The following code samples illustrate how to access the print method of the PrintExtension class.

>type=note
> **Note**: The **Print** method is implemented as an extension method of the [PrintExtension.Print](/activereportsnet/api/v20.1/MESCIUS.ActiveReports.Viewer.Common/GrapeCity.ActiveReports.PrintExtension.html) method, which is present in the GrapeCity.ActiveReports namespace of GrapeCity.ActiveReports.Viewer.Common assembly.
> 
> In order to access **Print** method through SectionDocument or PageDocument class, you need to add [GrapeCity.ActiveReports](/activereportsnet/api/v20.1/MESCIUS.ActiveReports.Viewer.Common/GrapeCity.ActiveReports.html) reference to the project. Also, as mentioned in the code, make sure that you add a reference for the [GrapeCity.ActiveReports](/activereportsnet/api/v20.1/MESCIUS.ActiveReports.Viewer.Common/GrapeCity.ActiveReports.html) namespace in your project using Imports (Visual Basic.NET) or using (C#) statement.

### Section Report

```vbnet
GrapeCity.ActiveReports.PrintExtension.Print(sectionDocument, True, True)
```

```csharp
GrapeCity.ActiveReports.PrintExtension.Print(sectionDocument, true, true);
```

### Page Report

```vbnet
GrapeCity.ActiveReports.PrintExtension.Print(pageDocument, True, True)
```

```csharp
GrapeCity.ActiveReports.PrintExtension.Print(pageDocument, true, true);
```

## See Also

[Page/RDLX Report](/activereportsnet/docs/v20.1/developers/working-with-reports-devs/page-rdl-report-developers)

[Section Report](/activereportsnet/docs/v20.1/developers/working-with-reports-devs/section-report-developers)