Print any type of document using Delphi
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.