--- ---

1. Drop a TComboBox on a form. Name it "cboPrinter". Set Style to csDropDownList.
2. Put the next two lines in the form's OnCreate event handler.

    // have available printers in the combo box
    cboPrinter.Items.Assign(printer.Printers);
    // pre-select the default / active printer
    cboPrinter.ItemIndex := printer.PrinterIndex;

Now, here's the method you can use to print any document type to a specified printer:

    uses ShellAPI, Printers;

    ...

    procedure TForm1.PrintDocument(const documentToPrint : string) ;
    var
      printCommand : string;
      printerInfo : string;
      Device, Driver, Port: array[0..255] of Char;
      hDeviceMode: THandle;
    begin
      if Printer.PrinterIndex = cboPrinter.ItemIndex then
      begin
        printCommand := 'print';
        printerInfo := '';
      end
      else
      begin
        printCommand := 'printto';
        Printer.PrinterIndex := cboPrinter.ItemIndex;
        Printer.GetPrinter(Device, Driver, Port, hDeviceMode) ;
        printerInfo := Format('"%s" "%s" "%s"', [Device, Driver, Port]) ;
      end;
      ShellExecute(
        Application.Handle,
        PChar(printCommand),
        PChar(documentToPrint),
        PChar(printerInfo),
        nil,
        SW_HIDE
      );
    end;

Note
To use this code you'll need an application registered for each file type you want to print.