1. Declare INovaPdfOptions variable
'create the NovaPdfOptions object
Public m_NovaOptions As New NovaPdfOptions
2. Register novaPDF Printer messages
Public wm_Nova_FileSaved As Long
Public wm_Nova_PrintError As Long
Sub Main()
' Registering the messages send by the print in order to listen for them
wm_Nova_FileSaved = RegisterWindowMessage(MSG_NOVAPDF2_FILESAVED)
wm_Nova_PrintError = RegisterWindowMessage(MSG_NOVAPDF2_PRINTERROR)
Form1.Show
End Sub
' Sub that will handle the windows messages
Public Function VB_WindowProc(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
' For the registered messages perform specific tasks
If wMsg = wm_Nova_FileSaved Then
OnNovaPDFFileSaved wParam, lParam
Exit Function
End If
If wMsg = wm_Nova_PrintError Then
OnNovaPDFPrintError wParam, lParam
Exit Function
End If
' For other messages just send them via normal (old) handling process
VB_WindowProc = CallWindowProc(oldHandler, hwnd, wMsg, wParam, lParam)
End Function
3. Initialize INovaPdfOptions
Private Sub Form_Load()
On Error GoTo ErrorHandler:
Dim strProfile As String
Dim strActiveProfile As String
' 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
' m_NovaOptions.Initialize(PRINTER_NAME, "<registration name>", "<license key>");
m_NovaOptions.Initialize PRINTER_NAME, "", "", ""
' sets the value of the windows messages handler to VB_WindowProc and sets the old handler address of function in oldHandler
oldHandler = SetWindowLongApi(Me.hwnd, GWL_WNDPROC, AddressOf VB_WindowProc)
cmbProfiles.Clear
....
Exit Sub
ErrorHandler:
Debug.Print err.Number & ":" & err.Description
End Sub
4. Set novaPDF Printer Options
Private Sub AddSmallSize()
On Error GoTo ErrHandler
m_NovaOptions.AddProfile2 SMALL_SIZE_PROFILE, PROFILE_IS_PUBLIC
' Set some options to this profile
' disable the "Save PDF file as" prompt
m_NovaOptions.SetOptionLong2 NOVAPDF_SAVE_PROMPT, False, SMALL_SIZE_PROFILE, PROFILE_IS_PUBLIC
' set generated Pdf files destination folder "c:\"
m_NovaOptions.SetOptionString2 NOVAPDF_SAVE_FOLDER, "c:\", SMALL_SIZE_PROFILE, PROFILE_IS_PUBLIC
' set output file name
m_NovaOptions.SetOptionString2 NOVAPDF_SAVE_FILE, "PDF Converter small size.pdf", SMALL_SIZE_PROFILE,
PROFILE_IS_PUBLIC
' if file exists in the destination folder, append a counter to the end of the file name
m_NovaOptions.SetOptionLong2 NOVAPDF_SAVE_CONFLICT_STRATEGY, FILE_CONFLICT_STRATEGY_AUTONUMBER_NEW, SMALL_SIZE_PROFILE, PROFILE_IS_PUBLIC
' don't detect URLs
m_NovaOptions.SetOptionLong2 NOVAPDF_URL_ANALIZE, False, SMALL_SIZE_PROFILE, PROFILE_IS_PUBLIC
' Set image compression method to JPEG and quality to 75, possible values are from 10 to 100
m_NovaOptions.SetOptionLong2 NOVAPDF_USE_IMAGE_COMPRESSION, True, SMALL_SIZE_PROFILE, PROFILE_IS_PUBLIC
m_NovaOptions.SetOptionLong2 NOVAPDF_IMAGE_COMPRESSION_METHOD, COMPRESS_METHOD_JPEG, SMALL_SIZE_PROFILE, PROFILE_IS_PUBLIC
m_NovaOptions.SetOptionLong2 NOVAPDF_IMAGE_COMPRESSION_LEVEL, 75, SMALL_SIZE_PROFILE, PROFILE_IS_PUBLIC
' make sure text compression is enabled, and set compression level to 9 maximum possible values are 1-9
m_NovaOptions.SetOptionLong2 NOVAPDF_USE_TEXT_COMPRESSION, True, SMALL_SIZE_PROFILE, PROFILE_IS_PUBLIC
m_NovaOptions.SetOptionLong2 NOVAPDF_TEXT_COMPRESSION_LEVEL, 9, SMALL_SIZE_PROFILE, PROFILE_IS_PUBLIC
' disable unused font embedding
m_NovaOptions.SetOptionLong2 NOVAPDF_EMBED_ALL_FONTS, False, SMALL_SIZE_PROFILE, PROFILE_IS_PUBLIC
Exit Sub
ErrHandler:
If err.Number <> NV_PROFILE_EXISTS Then Debug.Print err.Number & ":" & err.Description
End Sub
5. Start a print job
Private Sub btnStartPrinting_Click()
......
m_NovaOptions.SetActiveProfile2 cmbProfiles.Text, PROFILE_IS_PUBLIC
m_NovaOptions.SetDefaultPrinter
Dim strToExecute As String
Dim r As Long
m_NovaOptions.RegisterEventWindow Me.hwnd
m_NovaOptions.LicenseShellExecuteFile txtFileToConvert
r = ShellExecute(Me.hwnd, "print", txtFileToConvert, "", "", SW_HIDE)
btnStartPrinting.Enabled = True
Exit Sub
.....
End Sub
6. Restore default printer when printing finished
Private Sub OnNovaPDFFileSaved(wParam As Long, lParam As Long)
m_NovaOptions.UnRegisterEventWindow
m_NovaOptions.RestoreDefaultPrinter
End Sub
Private Sub OnNovaPDFPrintError(wParam As Long, lParam As Long)
Select Case wParam
Case ERROR_MSG_TEMP_FILE:
MsgBox "Error saving temporary file on printer server", vbOKOnly, "novaPDF"
Case ERROR_MSG_LIC_INFO:
MsgBox "Error reading license information", vbOKOnly, "novaPDF"
Case ERROR_MSG_SAVE_PDF:
MsgBox "Error saving PDF file", vbOKOnly, "novaPDF"
Case ERROR_MSG_JOB_CANCELED:
MsgBox "Print job was canceled", vbOKOnly, "novaPDF"
End Select
m_NovaOptions.UnRegisterEventWindow
m_NovaOptions.RestoreDefaultPrinter
End Sub