Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   HTML Drucken mit Printer.Canvas (https://www.delphipraxis.net/66590-html-drucken-mit-printer-canvas.html)

wlfmario 31. Mär 2006 22:54


HTML Drucken mit Printer.Canvas
 
Hallo zusammen,

ich möchte meine Mails im HTML Format ausdrucken mit meinen eigenen Header oben auf dem Ausdruck.
Jetzt habe ich in einen Tut gefunden wie man HTML Seiten im TWebBrowser ausdruckt, leider werden dann immer zwei Seite gedruckt (Header und HTML).
Es werde auch immer zei Dialoge angezeigt.
Leider finde ich keine gute Hilfe zu
Delphi-Quellcode:
WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER)
Wie kann ich jetzt realisieren, das die HTML Seite unter dem Header erscheint ?
Die Seite soll so ausgeduckt werden, wie sie im WebBrowser zu sehen ist.
hier mal mein Code mit dem ich das versuche:
Delphi-Quellcode:
...
...
if (PrintDialog1.Execute) then
  begin
    DateTimeToString(datum, 'dd.mm.yyyy hh:nn:ss', now);
    printer.BeginDoc;
    Printer.Title := 'MailClient - Mail Drucken';
    printer.Canvas.Font.Size := 12;
    Printer.Canvas.TextOut(250, 250, 'MailClient');
    Printer.Canvas.TextOut(printer.PageWidth - 1210, 250, datum);
    printer.Canvas.Font.Size := 10;
    printer.Canvas.Pen.Width := 8;
    printer.Canvas.MoveTo(250, 370);
    printer.Canvas.LineTo(printer.PageWidth - 250, 370);
    Printer.Canvas.TextOut(250, 450, 'Von: ' + Msg.From.Text);
    Printer.Canvas.TextOut(printer.PageWidth - 1650, 450, 'Empfangen: ' +
      DateToStr(Msg.Date) + ' um ' + TimeToStr(Msg.Date));
    Printer.Canvas.TextOut(250, 550, 'An: ' + Msg.Recipients.EMailAddresses);
    Printer.Canvas.TextOut(250, 650, 'Betr: ' + Msg.Subject);
    printer.Canvas.Pen.Width := 8;
    printer.Canvas.MoveTo(250, 800);
    printer.Canvas.LineTo(printer.PageWidth - 250, 800);
    if pos('Content-Type: text/html', msg.Headers.Text) <> 0 then
    begin
      WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER)
    end
    else
    begin
      for i := 0 to Richedit1.Lines.Count do
        Printer.Canvas.TextOut(250, 950 + (i *
          printer.Canvas.TextHeight(Richedit1.Lines.Strings[i])),
          Richedit1.Lines.Strings[i]);
    end;
    Printer.EndDoc;
  end;
...
...

marabu 1. Apr 2006 17:31

Re: HTML Drucken mit Printer.Canvas
 
Hallo Mario,

wenn du zweimal den PrintDialog siehst, dann deshalb, weil der WebBrowser in seinem eigenen print job druckt. Du darfst deinen Header nicht auf diese Weise drucken, arbeite mit Print Templates.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz