Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi PDF-Datei aus dem Inhalt eines VirtualStringTree erzeugen (https://www.delphipraxis.net/132616-pdf-datei-aus-dem-inhalt-eines-virtualstringtree-erzeugen.html)

Jens Hartmann 16. Apr 2009 12:06

Re: PDF-Datei aus dem Inhalt eines VirtualStringTree erzeuge
 
Ich habe mal im DF ein CrossPost angelegt, um eventuell an mehr Informationen zu kommen.

Gruß Jens

nahpets 16. Apr 2009 12:51

Re: PDF-Datei aus dem Inhalt eines VirtualStringTree erzeuge
 
Hallo,

wann soll das PDF erstellt werden? Bei jedem Ereignis oder einmal am Tag?
Bei bestimmten Ereignissen bedeutet für mich, dass genau dann das PDF erstellt wird und nicht permanent, nur so für den Fall, dass es ja eventuell gebraucht werden könnte.

Meine Vorstellung wäre hier:

Ereignis tritt ein.
Einmal durch den VST und alles als PDF ausgeben, was benötigt wird.

PowerPDF sollte da gut geeignet sein, schau es Dir aber bitte zuerst einmal (losgelöst von der Aufgabenstellung) an und entscheide dann, ob es das Gewünschte leisten kann.

HTML wäre hier aber auch nicht schlecht, das als HTML-Email und der Anwender sieht sofort in der Mail, was ihn (hoffentlich) interessiert, kein Spamfilter hält Dir 'nen Anhang fest, kein Anhang kann zu groß werden und der Anwender muss auch nicht erst den Anhang speichern, um Ihn dann zu öffnen. Okay: Der Mailclient muss HTML können ;-)

Delphi-Quellcode:
Procedure OnEreignisIrgendwasOderSo;
Var
     slHTML : TStringList
     i     : Integer;
begin
  slHTML := TStringList.Create;
  // Hier den Header der HTML-Seite bauen...
  slHTML.Add('<html>');
  slHTML.Add('<head>');
  slHTML.Add('<link rel="stylesheet" type="text/css" href="VST.css"');
  slHTML.Add('</head>');
  slHTML.Add('<body>');
  slHTML.Add('<table>');
  slHTML.Add('<tr>');
  slHTML.Add('<th>ID</th>');
  slHTML.Add('<th>LfdNr</th>');
  slHTML.Add('<th>Datum</th>');
  slHTML.Add('<th>Uhrzeit</th>');
  slHTML.Add('<th>Ereignis</th>');
  slHTML.Add('<th>Teilnehmer</th>');
  slHTML.Add('<th>Bereich</th>');
  slHTML.Add('</tr>');
  // Hier einmal durch den VST laufen und je Child
  for i := 0 to VST.Count do begin //oder so ähnlich
    slHTML.Add('<tr class="' + Ereignis + '">'); // Hierzu ein passendes Stylesheet bauen
    slHTML.Add('<td align="right">');
    slHTML.Add(IntToStr(Daten.ID));
    slHTML.Add('</td>');
    slHTML.Add('<td align="right">');
    slHTML.Add(IntToStr(Daten.LfdNr));
    slHTML.Add('</td>');
    slHTML.Add('<td align="left">');
    slHTML.Add(DateToStr(Daten.Datum));
    slHTML.Add('</td>');
...
    slHTML.Add('<td>');
    slHTML.Add(Daten.Bereich);
    slHTML.Add('</td>');
    slHTML.Add('</tr>');
  end;
  slHTML.Add('</table>');
  slHTML.Add('</body>');
  slHTML.Add('</html>');

  // hier slHTML speichern und als Mail verschicken, Lösungen solltest Du dazu im Forum finden.


  slHTML.Free;
end;
Stylesheet vst.css
Code:
.Stoerung     { background-color : #ff0000; }
.AllesInButter { background-color : #00FF00; }
.IchBinBlau   { background-color : #0000ff; }
.AllesGrau    { background-color : #999999; }
Hier für jedes Ereignis eine entsprechende Klasse einfügen, dann funktioniert das mit
Delphi-Quellcode:
slHTML.Add('<tr class="' + Ereignis + '">');
allerdings dürfen die Ereignisse dann keine Umlaute enthalten.

Das Aussehen lässt sich so an Kundenwünsche anpassen, ohne noch mal das Programm zu ändern, was bei PDF nicht geht.

XML und XSLT wäre hier natürlich auch noch eine Möglichkeit, die ähnlich einfach zu implementieren sein dürfte.

Jens Hartmann 16. Apr 2009 13:22

Re: PDF-Datei aus dem Inhalt eines VirtualStringTree erzeuge
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Stephan,

finde ich ne coole Idee, werde das aufjedenfall mal auprobieren. Ich häng mal eine Screenshot von meinem Programm an.
Ist es möglich die HTML Datei so ähnlich aussehen zu lassen wie das VST in der Abbildung.

Zitat:

Zitat von nahpets
wann soll das PDF erstellt werden? Bei jedem Ereignis oder einmal am Tag?

Das möchte ich in den Konfiguraionen meines Programms einstellen können. Möglich solle sein...

1. 1 mal Nachts z.B. die Ereignisse vom vergangenen Tag
2. Bei gewissen Ereignissen sofort, aber nur das vorher in der Konfiguration angegeben Ereignis(Also nur eine Zeile aus dem VST)

Gruß Jens

nahpets 16. Apr 2009 13:32

Re: PDF-Datei aus dem Inhalt eines VirtualStringTree erzeuge
 
Hallo,
Zitat:

Zitat von Jens Hartmann
Ich häng mal eine Screenshot von meinem Programm an.
Ist es möglich die HTML Datei so ähnlich aussehen zu lassen wie das VST in der Abbildung.

ja, Du brauchst nur im Stylesheet für jedes Ereignis eine entsprechende Klasse. Mit den Farben muss Du halt rumprobieren, bis es passt oder Dir die RGB-Werte des VST nehmen und dann ins Stylesheet übernehmen.
Für die Ereignisse brauchst Du eine "passende" Übersetzung, damit die Namen CSS-konform werden.

Hast Du eine Liste der Ereignisse in einer Stringliste oder so?

Dann wird halt aus
Code:
.Stoerung     { background-color : #ff0000; }
.AllesInButter { background-color : #00FF00; }
.IchBinBlau   { background-color : #0000ff; }
.AllesGrau    { background-color : #999999; }
Code:
.Ereignis1 { background-color : #ff0000; }
.Ereignis2 { background-color : #00FF00; }
.Ereignis3 { background-color : #0000ff; }
.Ereignis4 { background-color : #999999; }
und aus
Delphi-Quellcode:
slHTML.Add('<tr class="' + Ereignis + '">'); // Hierzu ein passendes Stylesheet bauen
wird dann
Delphi-Quellcode:
slHTML.Add('<tr class="Ereignis' + slEreignisliste.IndexOf(Ereignis) + '">');

Jens Hartmann 16. Apr 2009 13:42

Re: PDF-Datei aus dem Inhalt eines VirtualStringTree erzeuge
 
Ahhhhhhh, ja,

ich glaube ich versteh. Muss das aber erstmal ausprobieren. Also erstmal allerbesten Dank. Werde die Vorschläge mal durcharbeiten, wobei ich glaube das mit dem HTML nicht der schlechteste ist.

Ich muss das aber erstmal programmieren und ausprobieren, da ich damit bis jetzt noch nichts gemacht habe.

Gruß Jens

Luckie 16. Apr 2009 13:46

Re: PDF-Datei aus dem Inhalt eines VirtualStringTree erzeuge
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe so eine Logdatei mal mit XML und XSL realisiert. Da konnte man dann sogar nach bestimmten Einträgen filtern.

Jens Hartmann 16. Apr 2009 13:55

Re: PDF-Datei aus dem Inhalt eines VirtualStringTree erzeuge
 
Ihr macht mich glücklich, das wäre natürlich noch besser, aber jetzt tritt wieder mein Problem aus, was ist jetzt für mich die beste und vorallem für den Kunden die schönste Lösung.

Oh, man. ??????

Muss das glaube ich erstmal alles probieren. Hast du eventuell mal ein Beispiel,[EDIT] Sorry da war ja eins dran
[EDIT][ALT]das ich mal sehe, wie so was in XML aussehen könnte. Das kann ich mir momentan alles nicht so vorstellen.

Gruß Jens

Luckie 16. Apr 2009 14:23

Re: PDF-Datei aus dem Inhalt eines VirtualStringTree erzeuge
 
Da die XML-Datei nicht großartig verschachtelt ist, kannst du das gnaze einfach mit einer StringListe machen, ich glaube, so hab eich das damals auch gemacht.

Jens Hartmann 16. Apr 2009 14:43

Re: PDF-Datei aus dem Inhalt eines VirtualStringTree erzeuge
 
Ich muss mir das erstmal alles ansehen. Ich habe bislang noch nichts mit XML gemacht. Die Frage wäre nur, ich habe die Daten in einer Datenbank, kann ich nicht direkt irgendwas von den vielen Möglichkeiten direkt aus der Datenbank erstellen lassen, so eine Art Reportdatei die so aussieht.

Gruß Jens

fkerber 16. Apr 2009 14:49

Re: PDF-Datei aus dem Inhalt eines VirtualStringTree erzeuge
 
Hi!

Du kannst natürlich auch einen Reportgenerator wie z.B. RaveReport nutzen, um damit dann gleich eine PDF-Datei erstellen zu lassen (ich glaube es geht direkt nach PDF, ganz sicher bin ich mir nicht)


Ciao, Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:22 Uhr.
Seite 2 von 6     12 34     Letzte »    

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