I spent hours searching for a way to print pdf's without opening Acrobat and finally got it working using ShellExecute. I figured I would share

vb.net Code:
  1. Imports System.Runtime.InteropServices
  2. Imports System.IO
  3.  
  4. Public Class PDFPrinter
  5.  
  6. #Region " CONSTANTS "
  7.     Private Const SW_SHOWNORMAL As Integer = 2
  8. #End Region
  9.  
  10. #Region " API "
  11.     <DllImport("shell32")> _
  12.     Public Shared Function ShellExecute(ByVal hWnd As IntPtr, _
  13.                                         ByVal lpOperation As String, _
  14.                                         ByVal lpFile As String, _
  15.                                         ByVal lpParameters As String, _
  16.                                         ByVal lpDirectory As String, _
  17.                                         ByVal nShowCmd As Integer) As IntPtr
  18.     End Function
  19. #End Region
  20.  
  21. #Region " PUBLIC MEMBERS "
  22.     Public Function PrintPDF(ByVal FilePath As String) As Boolean
  23.         If IO.File.Exists(FilePath) Then
  24.             If ShellExecute(1, "Print", FilePath, "", _
  25.             Directory.GetDirectoryRoot(FilePath), SW_SHOWNORMAL).ToInt32 <= 32 Then
  26.                 Return False
  27.             Else
  28.                 Return True
  29.             End If
  30.         Else
  31.             Return False
  32.         End If
  33.     End Function
  34. #End Region
  35. End Class