Leadtools.WinForms Namespace : RasterImagePrinter Class |
public class RasterImagePrinter
'Declaration Public Class RasterImagePrinter
'Usage Dim instance As RasterImagePrinter
public ref class RasterImagePrinter
The RasterImagePrinter provides properties and method to make the process of printing an Leadtools.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 Leadtools.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.
Imports Leadtools.WinForms Imports Leadtools Imports Leadtools.Codecs ' 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 New RasterCodecs() Me.myImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif")) End Using ' Create the print document object Using document As 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 = DialogResult.OK ' Select the printer Using printDlg As New PrintDialog() printDlg.Document = document printDlg.AllowSomePages = True result = printDlg.ShowDialog() End Using ' Setup the page If result = DialogResult.OK Then Using pageSetupDlg As New PageSetupDialog() pageSetupDlg.Document = document pageSetupDlg.ShowDialog() End Using End If If result = 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 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 = DirectCast(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 = DirectCast(sender, PrintDocument) ' Create an new LEADTOOLS image printer class Dim printer As 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 = 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
using Leadtools.WinForms; using Leadtools; using Leadtools.Codecs; // 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"; }