- zmież sobie dokładnie, co do mm położenie i wymiary wszystkich pól na text
- pobierasz DPI drukarki (GetDeviceCaps(Printer.Handle, LOGPIXELSX))
- przeliczas położenie i rozmiar każdego "wirtualnego edita" na pixele
x, y - wsp. w mm na kartce
w, s - wys i szer w mm na kartce
xp = x * (10 / 254 * DPI);
yp = y * (10 / 254 * DPI);
wp = w * (10 / 254 * DPI);
sp = s * (10 / 254 * DPI);
tworzysz sobie z tego rect
var
r: TRect;
s: String;
...
begin
...
rect.Left := xp;
rect.Right := xp + sp;
rect.Top := yp;
rect.Bottom := yp + wp;
//i rysujesz text w tym obszarze + wyrównanie
Printer.Canvas.Font.Name := 'nazwa czcionki';
Printer.Canvas.Font.Style := [fsBold, fsItalic, fsUnderLine]; //oczywiście nie wszystkie muszą być zaznaczone
Printer.Canvas.Font.Size := 20; //rozmiar czcionki
Printer.BeginDoc; //rozpoczęcie wydruku
s := 'text do drukowania';
DrawText(Printer.Canvas.Handle, PChar(s), Length(s), rect, DT_CENTER);
*DT_CENTER - to wyśrodkowanie textu, więcej tu http:*msdn2.microsoft.com/en-us/library/ms533909.aspx
//następna linia
Printer.EndDoc; //zakończenie i fizyczne wysłanie wydruku na drukarkę