Create a PDF from Visual Basic 6 (VB6)

This example will show you how to print from VB6 to a PDF document.

Example Source Files

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Const PDF_PRINTERNAME = "PDF Writer - bioPDF"
Const PRINTER_PROGID = "bioPDF.PDFPrinterSettings"

Private Function PrinterIndex(ByVal printername As String) As Integer
    Dim i As Integer
    
    For i = 0 To Printers.Count - 1
        If LCase(Printers(i).DeviceName) Like LCase(printername) Then
            PrinterIndex = i
            Exit Function
        End If
    Next
    PrinterIndex = -1
End Function

Private Sub cmdPrint_Click()
    Dim prtidx As Integer
    Dim obj As Object
    
    Rem -- Configure the PDF print job
    Set obj = CreateObject(PRINTER_PROGID)
    obj.SetValue "Output""<desktop>\myfile.pdf"
    obj.SetValue "ConfirmOverwrite""no"
    obj.SetValue "ShowSaveAS""never"
    obj.SetValue "ShowSettings""never"
    obj.SetValue "ShowPDF""yes"
    obj.SetValue "RememberLastFileName""no"
    obj.SetValue "RememberLastFolderName""no"
    obj.WriteSettings True
    
    Rem -- Find the index of the printer
    prtidx = PrinterIndex(PDF_PRINTERNAME)
    If prtidx < 0 Then Err.Raise 1000, , "No printer was found by the name of '" & PDF_PRINTERNAME & "'."
        
    Rem -- Set the current printer
    Set Printer = Printers(prtidx)
        
    Rem -- Print something
    Printer.FontSize = 50
    Printer.Print "Hello VB6..."
    Printer.EndDoc
    
    Rem -- Wait for runonce settings file to disappear
    Dim runonce As String
    runonce = obj.GetSettingsFileName(True)
    While Dir(runonce, vbNormal) <> ""
        Sleep 100
    Wend
End Sub