What is wrong about Print method? It works quite well in Windows. I think it will be difficult to you making something different from that.
well...
There's RichEdit delphi method Print.
procedure TRichEdit.Print(const caption: string);
...and people were complaining about not being able to setup margins.
I believe that's why lzRichEdit finished with
procedure Print(const DocumentTitle: string; Margins :TMargins)
I believe, that giving an option just for margins is still not enough, and the method should be something like this.
procedure Print(const PrintOptions: TPrintOptions)
where TPrintOptions looks like this:
TPrintOptions = record
caption : String;
margins : TMargins;
pages : array of TPageRange;
pagesCount : integer;
target : TCanvas; // for preview printing
targetRect : TRect; // for preview reszing
... something else? + any future extension of printing could be consumed.
end;
With that method, a backward (delphi) compatible method can be easily implemented.