←Select platform

RasterImagePrinter Class

Summary

Supports printing of an RasterImage

Syntax
C#
VB
C++
public class RasterImagePrinter 
Public Class RasterImagePrinter 
public ref class RasterImagePrinter 

Remarks

The RasterImagePrinter provides properties and method to make the process of printing an RasterImage easier.

Printing using the .NET framework involves adding a handler to the System.Drawing.Printing.PrintDocument.PrintPage event. In that event handler, you setup a new instance of the RasterImagePrinter class, setup its properties as desired then call the Print method passing it the RasterImage to print, the page number to print and the System.Drawing.Printing.PrintPageEventArgs object obtained through your System.Drawing.Printing.PrintPageEventHandler.

Note: The RasterViewerCenterMode type has been renamed in version 15. Use the RasterPaintAlignMode enumeration instead.

Example
C#
VB
using Leadtools; 
using Leadtools.Controls; 
using Leadtools.Codecs; 
using Leadtools.Drawing; 
using LeadtoolsExamples.Common; 
 
// The image we are printing 
private RasterImage myImage = null; 
// The current page number being printed 
private int currentPrintPageNumber; 
public void RasterImagePrinterExample() 
{ 
   // Check if there are printers installed on this machine 
   if (PrinterSettings.InstalledPrinters == null || PrinterSettings.InstalledPrinters.Count < 1) 
   { 
      MessageBox.Show("There are no printers installed on this machine"); 
      return; 
   } 
 
   // Load the image 
   using (RasterCodecs codecs = new RasterCodecs()) 
   { 
      this.myImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif")); 
   } 
 
   // Create the print document object 
   using (PrintDocument document = new PrintDocument()) 
   { 
      // Setup the document pages 
      document.PrinterSettings.MinimumPage = 1; 
      document.PrinterSettings.MaximumPage = this.myImage.PageCount; 
      document.PrinterSettings.FromPage = 1; 
      document.PrinterSettings.ToPage = this.myImage.PageCount; 
 
      DialogResult result = DialogResult.OK; 
 
      // Select the printer 
      using (PrintDialog printDlg = new PrintDialog()) 
      { 
         printDlg.Document = document; 
 
         printDlg.AllowSomePages = true; 
 
         result = printDlg.ShowDialog(); 
      } 
 
      // Setup the page 
      if (result == DialogResult.OK) 
      { 
         using (PageSetupDialog pageSetupDlg = new PageSetupDialog()) 
         { 
            pageSetupDlg.Document = document; 
            pageSetupDlg.ShowDialog(); 
         } 
      } 
 
      if (result == DialogResult.OK) 
      { 
         // Add handlers for Begin/Print and End print events 
         document.BeginPrint += new PrintEventHandler(document_BeginPrint); 
         document.PrintPage += new PrintPageEventHandler(document_PrintPage); 
         document.EndPrint += new PrintEventHandler(document_EndPrint); 
 
         // Use the .NET print preview dialog 
         using (PrintPreviewDialog printPreviewDlg = new PrintPreviewDialog()) 
         { 
            printPreviewDlg.Document = document; 
            printPreviewDlg.WindowState = FormWindowState.Maximized; 
            result = printPreviewDlg.ShowDialog(); 
         } 
      } 
   } 
 
   // Clean up 
   this.myImage.Dispose(); 
} 
 
private void document_BeginPrint(object sender, PrintEventArgs e) 
{ 
   // Reset the current page number 
   // Since we are using the print preview dialog, this event will be called twice (once 
   // to generate the print preview and once for actual printing). So, we must set this back 
   // to the first print page 
   PrintDocument document = sender as PrintDocument; 
   this.currentPrintPageNumber = document.PrinterSettings.FromPage; 
} 
 
private void document_EndPrint(object sender, PrintEventArgs e) 
{ 
   // Nothing to do here 
} 
 
private void document_PrintPage(object sender, PrintPageEventArgs e) 
{ 
   // Get the print document object 
   PrintDocument document = sender as PrintDocument; 
 
   // Create an new LEADTOOLS image printer class 
   RasterImagePrinter printer = new RasterImagePrinter(); 
 
   // Set the document object so page calculations can be performed 
   printer.PrintDocument = document; 
 
   // We want to fit and center the image into the maximum print area 
   printer.SizeMode = RasterPaintSizeMode.FitAlways; 
   printer.HorizontalAlignMode = RasterPaintAlignMode.Center; 
   printer.VerticalAlignMode = RasterPaintAlignMode.Center; 
 
   // Account for FAX images that may have different horizontal and vertical resolution 
   printer.UseDpi = true; 
 
   // Print the whole image 
   printer.ImageRectangle = Rectangle.Empty; 
 
   // Use maximum page dimension ignoring the margins, this will be equivalant of printing 
   // using Windows Photo Gallery 
   printer.PageRectangle = RectangleF.Empty; 
   printer.UseMargins = false; 
 
   // Print the current page 
   printer.Print(this.myImage, this.currentPrintPageNumber, e); 
 
   // Go to the next page 
   this.currentPrintPageNumber++; 
 
   // Inform the printer whether we have more pages to print 
   if (this.currentPrintPageNumber <= document.PrinterSettings.ToPage) 
      e.HasMorePages = true; 
   else 
      e.HasMorePages = false; 
 
   // De-couple our PrintDocument from the RasterImagePrinter 
   printer.PrintDocument = null; 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
} 
Imports Leadtools 
Imports Leadtools.Controls 
Imports Leadtools.Codecs 
Imports Leadtools.Drawing 
 
' The image we are printing 
Private myImage As RasterImage = Nothing 
' The current page number being printed 
Private currentPrintPageNumber As Integer 
Public Sub RasterImagePrinterExample() 
   ' Check if there are printers installed on this machine 
   If PrinterSettings.InstalledPrinters Is Nothing OrElse PrinterSettings.InstalledPrinters.Count < 1 Then 
      MessageBox.Show("There are no printers installed on this machine") 
      Return 
   End If 
 
   ' Load the image 
   Using codecs As RasterCodecs = New RasterCodecs() 
      Me.myImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif")) 
   End Using 
 
   ' Create the print document object 
   Using document As PrintDocument = New PrintDocument() 
      ' Setup the document pages 
      document.PrinterSettings.MinimumPage = 1 
      document.PrinterSettings.MaximumPage = Me.myImage.PageCount 
      document.PrinterSettings.FromPage = 1 
      document.PrinterSettings.ToPage = Me.myImage.PageCount 
 
      Dim result As DialogResult = System.Windows.Forms.DialogResult.OK 
 
      ' Select the printer 
      Using printDlg As PrintDialog = New PrintDialog() 
         printDlg.Document = document 
 
         printDlg.AllowSomePages = True 
 
         result = printDlg.ShowDialog() 
      End Using 
 
      ' Setup the page 
      If result = System.Windows.Forms.DialogResult.OK Then 
         Using pageSetupDlg As PageSetupDialog = New PageSetupDialog() 
            pageSetupDlg.Document = document 
            pageSetupDlg.ShowDialog() 
         End Using 
      End If 
 
      If result = System.Windows.Forms.DialogResult.OK Then 
         ' Add handlers for Begin/Print and End print events 
         AddHandler document.BeginPrint, AddressOf document_BeginPrint 
         AddHandler document.PrintPage, AddressOf document_PrintPage 
         AddHandler document.EndPrint, AddressOf document_EndPrint 
 
         ' Use the .NET print preview dialog 
         Using printPreviewDlg As PrintPreviewDialog = New PrintPreviewDialog() 
            printPreviewDlg.Document = document 
            printPreviewDlg.WindowState = FormWindowState.Maximized 
            result = printPreviewDlg.ShowDialog() 
         End Using 
      End If 
   End Using 
 
   ' Clean up 
   Me.myImage.Dispose() 
End Sub 
 
Private Sub document_BeginPrint(ByVal sender As Object, ByVal e As PrintEventArgs) 
   ' Reset the current page number 
   ' Since we are using the print preview dialog, this event will be called twice (once 
   ' to generate the print preview and once for actual printing). So, we must set this back 
   ' to the first print page 
   Dim document As PrintDocument = TryCast(sender, PrintDocument) 
   Me.currentPrintPageNumber = document.PrinterSettings.FromPage 
End Sub 
 
Private Sub document_EndPrint(ByVal sender As Object, ByVal e As PrintEventArgs) 
   ' Nothing to do here 
End Sub 
 
Private Sub document_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) 
   ' Get the print document object 
   Dim document As PrintDocument = TryCast(sender, PrintDocument) 
 
   ' Create an new LEADTOOLS image printer class 
   Dim printer As RasterImagePrinter = New RasterImagePrinter() 
 
   ' Set the document object so page calculations can be performed 
   printer.PrintDocument = document 
 
   ' We want to fit and center the image into the maximum print area 
   printer.SizeMode = RasterPaintSizeMode.FitAlways 
   printer.HorizontalAlignMode = RasterPaintAlignMode.Center 
   printer.VerticalAlignMode = RasterPaintAlignMode.Center 
 
   ' Account for FAX images that may have different horizontal and vertical resolution 
   printer.UseDpi = True 
 
   ' Print the whole image 
   printer.ImageRectangle = Rectangle.Empty 
 
   ' Use maximum page dimension ignoring the margins, this will be equivalant of printing 
   ' using Windows Photo Gallery 
   printer.PageRectangle = RectangleF.Empty 
   printer.UseMargins = False 
 
   ' Print the current page 
   printer.Print(Me.myImage, Me.currentPrintPageNumber, e) 
 
   ' Go to the next page 
   Me.currentPrintPageNumber += 1 
 
   ' Inform the printer whether we have more pages to print 
   If Me.currentPrintPageNumber <= document.PrinterSettings.ToPage Then 
      e.HasMorePages = True 
   Else 
      e.HasMorePages = False 
   End If 
 
   ' De-couple our PrintDocument from the RasterImagePrinter 
   printer.PrintDocument = Nothing 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 

Requirements

Target Platforms

Help Version 20.0.2020.4.3
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Controls Assembly