How to use the LEADTOOLS Network Virtual Printer - Server Application

Show in webframe
Take the following steps to create and run a program that print using LEADTOOLS Network printer on the server machine.
  1. Make sure you have IIS installed on the machine correctly. And make sure the LEADTOOLS virtual printer web service is configured correctly.
  2. Start Visual Studio .NET.
  3. Choose File-> New-> Project... from the menu.
  4. In the New Project dialog box, choose either "Visual C# Projects" or "Visual Basic Projects" in the Projects Type List, and choose "Windows Application " in the Templates List.
  5. Type the project name as "PRINTER DRIVER SERVER" in the Project Name field, and then choose OK. If desired, type a new location for your project or select a directory using the Browse button, and then choose OK.
  6. In the "Solution Explorer" window, right-click on the "References" folder, and select "Add Reference..." from the context menu. In the "Add Reference" dialog box, select the ".NET" tab and browse to the Leadtools For .NET "<LEADTOOLS_INSTALLDIR>\Bin\DotNet\Win32 " folder and select the following DLLs:
    • Leadtools.dll
    • Leadtools.Forms.DocumentWriters.dll
    • Leadtools.Codecs.dll
    • Leadtools.WinForms.CommonDialogs.File.dll
    • Leadtools.Printer.dll
  7. Switch to Form1 code view (right-click Form1 in the solution explorer then select View Code ) and add the following lines at the beginning of the file: [Visual Basic]
    
                 Imports System.Drawing.Imaging
                 Imports Leadtools
                 Imports Leadtools.Printer
                 Imports Leadtools.Codecs
                 Imports Leadtools.Forms.DocumentWriters
                 Imports Leadtools.WinForms
                 Imports System.Text
                 Imports System.Diagnostics
                
    
    [C#]
    
                 using System.Drawing.Imaging;
                 using Leadtools;
                 using Leadtools.Printer;
                 using Leadtools.Codecs;
                 using Leadtools.Forms.DocumentWriters;
                 using Leadtools.WinForms.CommonDialogs.File;
                 using System.Text;
                 using System.Diagnostics;
                
    
  8. Declare the following private variable: [Visual Basic]
    
                 Private WithEvents _printer as Printer
                
    
    [C#]
    
                 Printer _printer;
                
    
  9. Add an event handler to the Form1 Load event and code it as follows: [Visual Basic]
    
                   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)
                          Try
                                 Dim printerName As String = "LEADTOOLS Printer"
                                 If (Not Printer.IsLeadtoolsPrinter(printerName)) Then
                                    Dim printerPassword As String = "1234"
                                    Dim documentPrinterRegPath As String = "SOFTWARE\LEAD Technologies, Inc.\Printer\"
                                    Dim printerInfo As PrinterInfo = New PrinterInfo()
                                    printerInfo.DriverName = printerName
                                    printerInfo.ProductName = printerName
                                    printerInfo.PrinterName = printerName
                                    printerInfo.Password = printerPassword
                                    printerInfo.RegistryKey = documentPrinterRegPath & printerName
                                    printerInfo.RootDir = "C:\LEADTOOLS 18\Bin\Common\PrinterDriver\"
                                    printerInfo.Url = "http://www.Leadtools.com"
                                    printerInfo.PrinterExe = Application.ExecutablePath
                                    Printer.Install(printerInfo)
                                 End If
                                 _printer = New Printer(printerName)
                                 _printer.EnableNetworkPrinting = True
                                 AddHandler _printer.EmfEvent, AddressOf Of EmfEventArgs
                                 AddHandler _printer.JobEvent, AddressOf Of JobEventArgs
                          Catch ex As Exception
                                 MessageBox.Show(Me, ex.Message)
                          End Try
                   End Sub
                 
                
    
    [C#]
    
                      private void Form1_Load(object sender, System.EventArgs e)
                      {
                         try
                         {
                            string printerName = "LEADTOOLS Printer";
                            if (!Printer.IsLeadtoolsPrinter(printerName))
                            {
                               string printerPassword = "1234";
                               string documentPrinterRegPath = @"SOFTWARE\LEAD Technologies, Inc.\Printer\";
                               PrinterInfo printerInfo = new PrinterInfo();
                               printerInfo.DriverName = printerName;
                               printerInfo.ProductName = printerName;
                               printerInfo.PrinterName = printerName;
                               printerInfo.Password = printerPassword;
                               printerInfo.RegistryKey = documentPrinterRegPath + printerName;
                               printerInfo.RootDir = @"C:\LEADTOOLS 18\Bin\Common\PrinterDriver\";
                               printerInfo.Url = "http://www.Leadtools.com";
                               printerInfo.PrinterExe = Application.ExecutablePath;
                               Printer.Install(printerInfo);
                            }
                            _printer = new Printer(printerName);
                            _printer.EnableNetworkPrinting = true;
                            _printer.EmfEvent += new EventHandler<EmfEventArgs>(_printer_EmfEvent);
                            _printer.JobEvent += new EventHandler<JobEventArgs>(_printer_JobEvent);
                         }
                         catch (Exception ex)
                         {
                            MessageBox.Show(this, ex.Message);
                         }
                      }
                 
                
    
  10. Add an event handler to the Emf event and code it as follows: [Visual Basic]
    
                 Private Sub printerTest_EmfEvent(ByVal sender As Object, ByVal e As EmfEventArgs) Handles printerTest.EmfEvent
                    System.IO.File.WriteAllBytes("c:\LEADTOOLS_IMAGE1.emf", e.Stream.ToArray())
                    Dim metaFile As New Metafile(e.Stream)
                 End Sub
                
    
    [C#]
    
                 void _printer_EmfEvent(object sender, EmfEventArgs e)
                 {
                   System.IO.File.WriteAllBytes(@"c:\LEADTOOLS_IMAGE1.emf", e.Stream.ToArray());
                   Metafile metaFile = new Metafile(e.Stream);
                 }
                 
                
    
  11. Add an event handler to the job info event and code it as follows: [Visual Basic]
    
                Private Sub _printer_JobEvent(ByVal sender As Object, ByVal e As JobEventArgs)
                   Dim printerName As String = e.PrinterName
                   Dim jobID As Integer = e.JobID
                   If e.JobEventState = EventState.JobStart Then
                      Try
                         'Data is string, the user specifies the data to sent from the client machine
                         'check user demo for more info
                         Dim enc As Encoding = Encoding.ASCII
                         Dim strData As String = enc.GetString(_printer.RemoteData.UserData)
                         MessageBox.Show(String.Format("Job {0} was started with remote data " & strData, jobID))
                      Catch ex As Exception
                         MessageBox.Show(ex.Message)
                         Throw
                      End Try
                   Else If e.JobEventState = EventState.JobEnd Then
                      MessageBox.Show(String.Format("Job {0} was Ended", jobID))
                      Process.Start("mspaint", "c:\LEADTOOLS_IMAGE1.emf")
                   End If
                End Sub
                
    
    [C#]
    
                void _printer_JobEvent(object sender, JobEventArgs e)
                {
                   string printerName = e.PrinterName;
                   int jobID = e.JobID;
                   if (e.JobEventState == EventState.JobStart)
                   {
                      try
                      {
                         // Data is string, the user specifies the data to sent from the client machine
                         // check user demo for more info
                         Encoding enc = Encoding.ASCII;
                         String strData = enc.GetString(_printer.RemoteData.UserData);
                         MessageBox.Show(string.Format("Job {0} was started with remote data " + strData, jobID));
                      }
                      catch (Exception ex)
                      {
                         MessageBox.Show(ex.Message);
                         throw;
                      }
                   }
                   else if (e.JobEventState == EventState.JobEnd)
                   {
                      MessageBox.Show(string.Format("Job 0 was Ended", jobID));
                      Process.Start("mspaint", @"c:\LEADTOOLS_IMAGE1.emf");
                   }
                }
                
    
    Note: when the job event is received, the _printer.RemoteDate will return the data sent from the remote machine, this data will be available until demo receives EventState.JobEnd _printer.RemoteDate will contain row data, this raw data will be specified by the user.
  12. Build, and Run the program to test it.
  13. Make sure to share the new printer after installing it.
  14. Now the server demo is ready to receive print jobs from the client machine How To Use The Virtual Printer Driver Network Client.

 

 


Products | Support | Contact Us | Copyright Notices
© 2006-2014 All Rights Reserved. LEAD Technologies, Inc.