Hallo Leute,
ein Gerät mit embeeded Linux/ApacheWebserver wird ausgelesen und die Werte als "Bericht[x].jpg" abgespeichert.
Funktioniert so weit einigermaßen. Schöner wäre natürlich, wenn der Bericht als PDF abgespeichert wird.
Nur - wie könnte ich das machen?
Vielen Dank
Erich Wanker
IST-Situation:
Ich lade einen
HTML Text von einer Quelle in ein Memo via:
Delphi-Quellcode:
idClient := TIdHTTP.Create(Application);
msData := TMemoryStream.Create;
try
idClient.Get('http://'+edit1.Text+'/goto.htm?Satz='+inttostr(nummerl)+'', msData);
msData.Seek(0, soFromBeginning);
Memo1.Lines.LoadFromStream(msData);
finally
idClient.Free;
msData.Free;
end;
anschließend bereinige ich den Text und laden ihn in einen Webbrowser via:
Delphi-Quellcode:
bereinigen := Memo1.Text;
bereinigen := Stringreplace(bereinigen,'window.print();','',[rfReplaceAll]);
bereinigen := Stringreplace(bereinigen,'</head>','</head> <font face="Arial">',[rfReplaceAll]);
Memo1.Text := bereinigen;
LoadHTMLToWebbrowser(WebBrowser1,memo1.lines);
webbrowser1.Refresh;
Anschließend mach ich einen Screenshot und speichere den ab via:
P.S.: da die Berichte immer gleich lang sind, hab ich die Größe des Webbrowser händisch passend gemacht und den Webbrowser.visible:=false geschaltet .. Schrecklicher Work-around
WebBrowserScreenShot(WebBrowser1,exepfad+'Bericht['+inttostr(nummerl)+'].jpg');
Codeschnipsel betreffend "Screenshot":
Delphi-Quellcode:
procedure TForm1.WebBrowserScreenShot(const wb: TWebBrowser; const fileName: TFileName) ;
var
viewObject : IViewObject;
r : TRect;
bitmap : TBitmap;
begin
if wb.Document <> nil then
begin
wb.Document.QueryInterface(IViewObject, viewObject) ;
if Assigned(viewObject) then
try
bitmap := TBitmap.Create;
try
r := Rect(0,0, wb.Width,wb.Height) ;
bitmap.Width := wb.Width-GetSystemMetrics(SM_CXVSCROLL);
bitmap.Height := wb.Height-GetSystemMetrics(SM_CYHSCROLL);
viewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Application.Handle, bitmap.Canvas.Handle, @r, nil, nil, 0) ;
with TJPEGImage.Create do
try
Assign(bitmap) ;
SaveToFile(fileName) ;
finally
Free;
end;
finally
bitmap.Free;
end;
finally
viewObject._Release;
end;
end;
end;
Benutze Delphi7
LMD-Tools
ZEOS-Lib
Reportbuilder9
Firebird 2.1
MadTools
...
Erich Wanker - for life:=1971 to lebensende do begin ..