![]() |
HTML Datei drucken
Moin,
ich möchte durch Doppelklick auf eine Exe automatisch eine HTML Datei drucken. Im OnCreate meiner Form rufe ich folgendes auf:
Delphi-Quellcode:
Meine Frage ist nun, wie ich die Druckerauswahl unterdrucken kann und die Datei direkt am Standarddrucker ausgedruckt wird?
var
Pfad: String; begin Pfad := ExtractFilePath(paramstr(0)); ShellExecute(Handle,'Print',PChar(Pfad+'index.html'),'','',0); MfG David |
AW: HTML Datei drucken
Den Druckdialog eben nicht benutzen, sondern ohne Druckdialog und RAW-Druck zeilenweise an den Printer drucken. Der Standarddrucker hat den Printer-Index -1.
Oder willst Du die HTML nicht als Ascii-Datei drucken sondern eine erzeugte, gestaltete HTML-Seite? |
AW: HTML Datei drucken
Ich will die gestaltete HTML Seite drucken, nicht den Quelltext
und ich krieg diese Druckerauswahl einfach nicht weg ... MfG David |
AW: HTML Datei drucken
Der Druckdialog wird von dem Programm aufgerufen, mit dem *.HTML verknüpft ist und welches du mit ShellExecute startest.
Wenn es nicht möglich ist, in den Optionen dieses Programmes den Druckdialog abzuschalten und sofortigen Druck zum Standard-Drucker einzustellen, musst du eben die Seitengestaltung über HTML-units intern erledigen und dann normal (intern) drucken. Wobei es eh ziemlich willkürliche Ergebnisse liefert, was du da erzeugt hast; der Standarddrucker kann auf sonst etwas gesetzt sein, die HTML-Zuordnung auf ein anderes Programm verweien ... |
AW: HTML Datei drucken
gibts vll ne ganz andere Möglichkeit, über ein PrintDialog oder über ein TWebbrowser??
Muss diese Druckauswahl unbedingt rauskriegen :evil: |
AW: HTML Datei drucken
Du kannst es versuchen mit
Delphi-Quellcode:
ShellExecute( 0, 'printto', PChar(DocumentName), PChar(PrinterName), nil,SW_HIDE);
res := ShellExecute( 0, 'printto', //PChar('C:\temp\test.htm'), >> funktioniert bei mir nicht PChar('C:\temp\test.xls'), // funktioniert PChar('PDF24'), nil, SW_HIDE ); |
AW: HTML Datei drucken
Hat bei mir auch nicht funktioniert ...
Will's jetzt mit Hilfe des TWebbrowser lösen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var Pfad: String; begin Pfad := ExtractFilePath(paramstr(0)); WebBrowser1.Navigate(Pfad+'index.html'); end; procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin if ParamCount > 0 then webbrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER) else WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER); end; Funktioniert auch, nur will er jetzt garnicht mehr aufhören zu drucken. Ist eine andere Procedure zu verwenden, oder was läuft hier falsch? Nachtrag: Mir ist aufgefallen, dass er die HTML Seite im Webbrowser irgendwie ständig aktualisiert und deshalb auch ständig erneut druckt ... jemand ne Idee weshalb?!? Problem ist folgendes: Die HTML Seite wird alle 30 Sekunden neu geladen ... Problem hierbei ist, ich krieg die HTML Datei nur übergeben, heißt ich darf nichts an ihr verändern .
Code:
<HTML><HEAD><TITLE>ZMI - Statustableau</TITLE><meta http-equiv="refresh" content="30">
|
AW: HTML Datei drucken
Hab's folgendermaßen gelöst:
Kopier mir zunächst die HTML Datei, lösch den Zeilenabschnitt mit dem Refresh raus und ruf dann die HMTL Seite über den Webbrowser auf, dann funktionierts, wie gewünscht.
Delphi-Quellcode:
Danke für eure Mithilfe !!!
procedure TForm1.FormCreate(Sender: TObject);
var Pfad: String; strlst: TStringList; begin strlst := TStringList.Create; Pfad := ExtractFilePath(paramstr(0)); try CopyFile(PChar(Pfad+'index.html'), PChar(Pfad+'index_print.html'),False); strlst.LoadFromFile(Pfad+'index_print.html'); strlst.Text := StringReplace(strlst.Text, '<meta http-equiv="refresh" content="30">', '', [rfReplaceAll]); strlst.SaveToFile(Pfad+'index_print.html'); finally strlst.Free; end; WebBrowser1.Navigate(Pfad+'index_print.html'); end; procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin if ParamCount > 0 then Webbrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER) else WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER); end; MfG David |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz