Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как распечатать PRN?

01.01.2007
uses 
  Printers, Winspool; 
 
function SpoolFile(const FileName, PrinterName: string): Integer; 
var 
  Buffer: record 
    JobInfo: record // ADDJOB_INFO_1 
      Path: PChar; 
      JobID: DWORD; 
    end; 
    PathBuffer: array[0..255] of Char; 
  end; 
  SizeNeeded: DWORD; 
  Handle: THandle; 
  PrtName: string; 
  ok: Boolean; 
begin 
  // Flush job to printer 
  PrtName := PrinterName; 
  if PrtName = '' then 
    PrtName := Printer.Printers[Printer.PrinterIndex]; // Default printer name 
  ok := False; 
  if OpenPrinter(PChar(PrtName), Handle, nil) then 
    if AddJob(Handle, 1, @Buffer, SizeOf(Buffer), SizeNeeded) then 
      if CopyFile(PChar(FileName), Buffer.JobInfo.Path, True) then 
        if ScheduleJob(Handle, Buffer.JobInfo.JobID) then 
          ok := True; 
  if not ok then Result := GetLastError 
  else  
    Result := 0; 
end; 
 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  if SpoolFile('c:\test.prn', Printer.Printers[0]) = 0 then 
    ShowMessage('No error...'); 
end; 

Взято с сайта https://www.swissdelphicenter.ch/en/tipsindex.php