AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Webbrowser drucken geht nicht. Warum???
Thema durchsuchen
Ansicht
Themen-Optionen

Webbrowser drucken geht nicht. Warum???

Ein Thema von Muellermilchtrinker · begonnen am 5. Feb 2010 · letzter Beitrag vom 6. Feb 2010
Antwort Antwort
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#1

Webbrowser drucken geht nicht. Warum???

  Alt 5. Feb 2010, 13:43
Servus DP,

ich hab auf meinem Formular einen webbrowser und möchte den nun drucken.
Ich drucke mit folgender Procedur:
Delphi-Quellcode:
procedure WB_PrintWithHeaderFooter(Webbrowser: TWebbrowser; Header, Footer: PWideChar);
var
  saBound: TSafeArrayBound;
  psaHeadFoot: PSafeArray;
  vaIn, vaOut: TVariantArg;
  vHeadStr, vFootStr: TVariantArg;
  rgIndex: LongInt;
begin
  try
    saBound.lLbound := 0;
    saBound.cElements := 2;
    psaHeadFoot := SafeArrayCreate(VT_VARIANT, 1, saBound);
    vHeadStr.vt := VT_BSTR;
    vHeadStr.bstrVal := SysAllocString(Header);
    vFootStr.vt := VT_BSTR;
    vFootStr.bstrVal := SysAllocString(Footer);
    rgIndex := 0;
    OleCheck(SafeArrayPutElement(psaHeadFoot, rgIndex, vHeadStr));
    rgIndex := 1;
    OleCheck(SafeArrayPutElement(psaHeadFoot, rgIndex, vFootStr));
    vaIn.vt := VT_ARRAY or VT_BYREF;
    vaIn.parray := psaHeadFoot;
    Webbrowser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER,
      OleVariant(vaIn), OleVariant(vaOut));
    if vHeadStr.bstrVal <> nil then
      SysFreeString(vHeadStr.bstrVal);
    if vFootStr.bstrVal <> nil then
      SysFreeString(vFootStr.bstrVal);
  except
  end;
end;
Bei meinem anderen Projekt klappt das alles wunderbar.
Nur bei meinem aktuellen nicht.
Der druckt nur eine leere Seite.
Ich habs schon mit:
Webbrowser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, OleVariant(vaIn), OleVariant(vaOut)); probiert.
Da bekomm ich ne leere Seite mit Kopf und Fusszeile, die ich aber nicht will.

Ich hoffe ihr könnt mir helfen.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Webbrowser drucken geht nicht. Warum???

  Alt 5. Feb 2010, 14:15
Mal kurz durchgeschoben und
funktioniert!

Wenn Frames auf der Seite sind sieht das allerdings etwas seltsam aus(Stückwerk).

liegt es vielleicht daran?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Webbrowser drucken geht nicht. Warum???

  Alt 5. Feb 2010, 15:29
Nein keine Frames.
Nur normaler HTML Text.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Webbrowser drucken geht nicht. Warum???

  Alt 6. Feb 2010, 13:55
Also jetzt versteh ich die Welt nicht mehr.
Davor lad ich mit dieser FUnktion den HTML Code in meinen Webbrowser:
Delphi-Quellcode:
procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
var
  sl: TStringList;
  ms: TMemoryStream;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
   Application.ProcessMessages;

  if Assigned(WebBrowser.Document) then
  begin
    sl := TStringList.Create;
    try
      ms := TMemoryStream.Create;
      try
        sl.Text := HTMLCode;
        sl.SaveToStream(ms);
        ms.Seek(0, 0);
        (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
      finally
        ms.Free;
      end;
    finally
      sl.Free;
    end;
  end;
end;
Wenn ich jetzt so aufruf:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
{...}
begin
{...}
WB_LoadHTML(Webbrowser1,HTMLCODE.Text);
WB_PrintWithHeaderFooter(Webbrowser1, ' ', ' ');
end;
Dann druckt er mir ne leere Seite.
Wenn ich jetzt aber so aufruf:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
{...}
begin
{...}
WB_LoadHTML(Webbrowser1,HTMLCODE.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
WB_PrintWithHeaderFooter(Webbrowser1, ' ', ' ');
end;
Dann druckt er alles einwandfrei.
Sprich die zwei Proceduren funktionieren nicht hintereinander.
Warum???
Ich hoffe ihr könnt mir helfen.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Webbrowser drucken geht nicht. Warum???

  Alt 6. Feb 2010, 14:04
Du musst ihm noch Zeit lassen, die Seite zu laden.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  {...}
begin
  {...}
  WB_LoadHTML(Webbrowser1, HTMLCODE.Text);
  Application.ProcessMessages;
  WB_PrintWithHeaderFooter(Webbrowser1, ' ', ' ');
end;
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Webbrowser drucken geht nicht. Warum???

  Alt 6. Feb 2010, 14:06
Danke.
Funktioniert jetzt.
Darauf hätt ich auch kommen können.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 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