VBNet Converter

Top  Previous  Next

The VBNet Converter sample demonstrates how to convert an existing file by printing it to novaPDF Printer using the ShellExecute function. It also demonstrates how to set different options and manage profiles.

 

The same approach should be taken if you print using a "Print()" method from another object (like an internet browser or a report control). Just replace the ShellExecute call with the call of your Print method.

 

When the application starts, it creates a few profiles and makes different settings in the profiles. Then it shows a dialog from where the user can select the active profile and change its settings using the controls from the dialog.

 

After that a document can be selected from the harddisk and printed to novaPDF Printer using the ShellExecute function call.

 

When using this technique to convert a file to PDF, you have to take care of the fact that ShellExecute prints to the default printer. This function returns immediately and does not wait until the print is finished (it may return before the printing is actually started). Therefore you have to set the default printer to novaPDF Printer before calling ShellExecute (using the SetDefaultPrinter method), wait the process to be started (using WaitForExit()), restore the default printer (with the RestoreDefaultPrinter method). This way you made sure that the default printer was restored and your document is printed to novaPDF Printer.

 

Source code snippets

 

1. Declare INovaPdfOptions variable

  Private mobjNovaOptios As NovaPdfOptionsClass

 

2. Initialize INovaPdfOptions

  mobjNovaOptios = New NovaPdfOptionsClass

 

  ' initialize the NovaPdfOptions object

  ' if you have an application license for novaPDF SDK,

  ' pass both the registration name and the license key to the Initialize() function

  ' mobjNovaOptios.Initialize(PRINTER_NAME, '<registration name>', '<license key>');

  mobjNovaOptios.Initialize(PRINTER_NAME, """""")

 

  AddSmallProfile()

  AddFullProfile()

 

3. Set novaPDF Printer Options

  Try

    mobjNovaOptios.AddProfile2(SMALL_SIZE_PROFILE, PROFILE_IS_Public)

    ' Set some options to this profile

    ' disable the 'Save PDF file as' prompt

 

    mobjNovaOptios.SetOptionLong2(NovaOptions.NOVAPDF_SAVE_PROMPT, 1, SMALL_SIZE_PROFILE, PROFILE_IS_Public)

    ' set generated Pdf files destination folder  'c:\'

    mobjNovaOptios.SetOptionString2(NovaOptions.NOVAPDF_SAVE_FOLDER, "c:\", SMALL_SIZE_PROFILE, PROFILE_IS_Public)

 

    // .....

 

  Catch ComException As System.Runtime.InteropServices.COMException

    If ((Not ComException.ErrorCode Xor NovaErrors.NV_PROFILE_EXISTS) Xor -1) = 0 Then

      System.Diagnostics.Debug.WriteLine("Profile ""Small Size Profile"" exists")

    Else

      MessageBox.Show("Error creating Small Size Profile:" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "" + ComException.Message)

      System.Diagnostics.Debug.WriteLine(ComException.Message)

    End If

  End Try

 

4. Start a Print job

Private Sub btnStartPrinting_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStartPrinting.Click

 

  UpdateProfileFromDialog()

  mobjNovaOptios.SetActiveProfile2(CType((cmbProfiles.SelectedItem), String))

  mobjNovaOptios.SetDefaultPrinter()

  mobjNovaOptios.LicenseShellExecuteFile(txtFileToConvert.Text)

  Dim myProcess As Process = New Process

  Try

    myProcess.StartInfo.FileName = txtFileToConvert.Text

    myProcess.StartInfo.Verb = "Print"

    myProcess.StartInfo.CreateNoWindow = True

    myProcess.Start()

  Catch ex As Win32Exception

    If ex.NativeErrorCode = Error_FILE_Not_FOUND Then

      Console.WriteLine(ex.Message + ". Check the path and filename")

    Else

      ' Note that if your word processor might generate exceptions

      ' such as this, which are handled first.

      If ex.NativeErrorCode = Error_Access_DENIED Then

        Console.WriteLine(ex.Message + ". You do not have permission to print this file.")

      End If

    End If

  End Try

  myProcess.WaitForExit(10000)

  myProcess.Close()

  mobjNovaOptios.RestoreDefaultPrinter()

End Sub