Question:
How can I change the port a given printer will use in code?
Answer:
You can use the SetPrinter method of TPrinter to change the 
port. The following example demonstrates changing the port 
to print to a file.
Example:
uses Printers;
{$IFNDEF WIN32}
 const MAX_PATH = 144;
{$ENDIF}
procedure TForm1.Button1Click(Sender: TObject);
var
 pDevice : pChar;
 pDriver : pChar;
 pPort : pChar;
 hDMode : THandle;
 PDMode : PDEVMODE;
begin
 if PrintDialog1.Execute then begin
 GetMem(pDevice, cchDeviceName);
 GetMem(pDriver, MAX_PATH);
 GetMem(pPort, MAX_PATH);
 Printer.GetPrinter(pDevice, pDriver, pPort, hDMode);
 Printer.SetPrinter(pDevice, PDriver, 'FILE:', hDMode);
 FreeMem(pDevice, cchDeviceName);
 FreeMem(pDriver, MAX_PATH);
 FreeMem(pPort, MAX_PATH);
 Printer.BeginDoc;
 Printer.Canvas.TextOut(100, 100, 'Delphi Is RAD!');
 Printer.EndDoc;
 end;
end;