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.