Zitat von
Bernhard Geyer:
Folgende Möglichkeiten gibt es:
a, Lösch den Cache
b, Nimm unterschiedliche Dateinamen für das Dokument
c, Erzeuge das Dokument direkt im IE mittels
IPersistStreamInit-Interface
Ich würde es mit Möglichkeit (c) versuchen.
Hallo Bernhard,
vielen Dank für die schnelle Antwor. Ich habe es mal "auf die schnelle" mit folgenden Code probiert:
Delphi-Quellcode:
{ Bericht drucken }
function TReport.Print: Boolean;
var
WebBrowser: TWebBrowser;
MemStream: TMemoryStream;
IECommand: IOleCommandTarget;
vaOut: OleVariant;
begin
try
Print := False;
PrintSema.Enter;
try
WebBrowser := TWebBrowser.Create(
nil);
try
WebBrowser.Navigate('
about:blank');
while WebBrowser.ReadyState < READYSTATE_INTERACTIVE
do
Application.ProcessMessages;
MemStream := TMemoryStream.Create;
try
FLines.SaveToStream(MemStream);
MemStream.Seek(0, 0);
(WebBrowser.Document
as IPersistStreamInit).InitNew;
(WebBrowser.Document
as IPersistStreamInit).Load(TStreamAdapter.Create(MemStream));
IECommand := WebBrowser.Document
as IOleCommandTarget;
IECommand.Exec(
nil, OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, EmptyParam, vaOut);
Print := True;
finally
MemStream.Free;
end;
finally
WebBrowser.Free;
end;
finally
PrintSema.Leave;
end;
except
on E:
Exception do
begin
ELog.LogDebug(E.
Message);
Result := False;
end;
end;
end;
Ist im Pronzip das gleiche Ergebnis. Es wird eine leere Seite ausgegeben... Müsste mal prüen, ob das Ganze unter XP so geht. Auf dem Vistasystem geht's auf jeden Fall nicht. Das mit dem unterschiedlichen Dokumentnamen zeigt auch keinen Effekt. Ich bin etwas ratlos im Moment.
Sonst noch Ideen???
Alex
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)