Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
var
FormImage: TBitmap;
PrinterDpiHeight, PrinterDpiWidth: Integer;
FormDpiHeight, FormDpiWidth: Integer;
Source: TRect;
begin
FormImage := Self.GetFormImage;
try
Printer.Orientation := poLandscape;
Printer.BeginDoc;
try
Source := Self.ClientRect;
PrinterDpiWidth := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX);
FormDpiWidth := GetDeviceCaps(Self.Canvas.Handle, LOGPIXELSX);
Source.Width := Round(Source.Width * (PrinterDpiWidth / FormDpiWidth));
PrinterDpiHeight := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY);
FormDpiHeight := GetDeviceCaps(Self.Canvas.Handle, LOGPIXELSY);
Source.Height := Round(Source.Height * (PrinterDpiHeight / FormDpiHeight));
Printer.Canvas.StretchDraw(Source, FormImage);
finally
Printer.EndDoc;
end;
finally
FormImage.Free;
end;
end;
Damit bekommst du die gesamte Form mit der 1:1 Größe wie das richtige Formular ins PDF.
Willst du das seitenfüllend haben, müsstest du noch ein bisschen an Width und Height spielen.
Ich habe auf der Form etwas gezeichnet, dass ist leider nicht drauf zu erkennen. Gezeigt werden nur die Bedienelemente