Hallo,
ich versuche jetzt schon geraume Zeit, eine Bitmap auf dem Drucker so auszugeben, dass der volle bedruckbare Bereich genutzt wird.
Aber ich erhalte immer unten einen Rand von ca. 25 mm.
Das sit der bisherige Code:
Delphi-Quellcode:
procedure TFRMEdtBrief.PrintLetterHead(toCanvas: TCanvas; PageRect: TRect;
IsPrinter: Boolean);
var
ox: Integer;
oy: Integer;
presx: Integer;
presy: Integer;
aPageWidth: Integer;
aPageHeight: Integer;
PrintRect: TRect;
begin
// Ausgabe auf Drucker
if IsPrinter then
begin
// Offsets
ox := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALOFFSETX);
oy := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALOFFSETY);
// Resolution
presx := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
presy := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
aPageWidth := MulDiv(GetDeviceCaps(Printer.Handle, PHYSICALWIDTH), 1440, presx);
aPageHeight := MulDiv(GetDeviceCaps(Printer.Handle, PHYSICALHEIGHT), 1440, presy);
if printer.Printing then
begin
PrintRect.Left := -ox;
PrintRect.Top := -oy;
PrintRect.Right := PrintRect.Left + MulDiv(aPageWidth, presx, 1440);
PrintRect.Bottom := PrintRect.Top + MulDiv(aPageHeight, presy, 1440);
Printer.canvas.StretchDraw(PrintRect, FBitMap);
end;
end
else
toCanvas.StretchDraw(PageRect, FBitMap);
end;
Das ganze wird im OnPaintWaterMark eine TWPRichText aufgerufen.
Hat jemand einen Ansatz für mich?
Danke, Frank