Seite 1 von 1

HTML-Template laden, füllen, drucken

Verfasst: 06.12.2013 08:48
von gnaps
Hallo Forum,

ich habe eine Verwaltung geschrieben, GUI, SQL alles perfekt,
nur das drucken bekomme ich nicht hin.

mit Drawtext usw. habe ich zu wenige Möglichkeiten.
auf Canvas zeichnen und BitBlt_ habe ich eine schlecht Druckauflösung.

was nun ?

Mein Vorhaben zum Drucken

- HTML-Template einladen (wird extern erstellt und bereitgestellt, dadurch auch verschiedene Layouts möglich))
- mit Daten füllen (aus der Datenbank)
- als HTML Tempdatei speichern
- HTML-Temp-Datei in Webgadget einladen (als Vorschau)
- HTML-Datei drucken (wenn nötig auch über den Standart-Browser)

ist so etwas möglich und wie gehe ich da vor.

Danke im vorraus für Eure Tips

Re: HTML-Template laden, füllen, drucken

Verfasst: 06.12.2013 09:25
von Morty
Moin.

Sowas in der Art hab ich auch schonmal für ein Projekt gemacht. Ich habe damals einfach in mein HTML Script den Standard Druckaufruf über JavaScript eingefügt.

Code: Alles auswählen

window.print();
- Morty

Re: HTML-Template laden, füllen, drucken

Verfasst: 06.12.2013 17:17
von Derren
Ich kann nur die Printer Lib von ABBKlaus empfehlen. Windows only. http://www.purebasicpower.de/?PrinterLib_%28Windows%29

Re: HTML-Template laden, füllen, drucken

Verfasst: 09.12.2013 12:40
von gnaps
Hallo Leute,

ich möchte hier meine Frage selber beantworten:

Ja, es ist möglich wie oben angefragt.

HTML Datei erstellt, Platzhalter mit zb.: %Anrede% (dies natürlich auch für alle weiteren Daten) eingebaut.

eine Liste einrichten

Code: Alles auswählen

NewList Zeile.s()
HTML-Datei laden

Code: Alles auswählen

  If ReadFile(1,GetCurrentDirectory()+"bericht.html")
    ; 
    While Not Eof(1)
      AddElement(Zeile()) : Zeile() = ReadString(1)
    Wend
    CloseFile(1)
  Else 
    MessageRequester("Meldung","HTML nicht gefunden")
  EndIf
Daten aus den Gadgets holen

Code: Alles auswählen

anrede.s = Getgadgettext(#Anrede)
Zeile durchsuchen und abändern

Code: Alles auswählen

    ForEach Zeile()
      zeile()=ReplaceString(Zeile(),"%Anrede%",Anrede.s)
    Next 
  EndIf
Temp-HTML Datei erstellen

Code: Alles auswählen

  ForEach Zeile()
    If OpenFile(0, "bericht-temp.html")
      FileSeek(0, Lof(0))
      WriteStringN(0,Zeile())
      CloseFile(0)
    EndIf
  Next
Druckvorschau mit dem Webgadget erstellen

Code: Alles auswählen

WebGadget(#gad_Vorschau,10,60,820,590,GetCurrentDirectory()+"bericht-temp.html")
Drucken

Code: Alles auswählen

SetGadgetText(#gad_Vorschau, "javascript:window.print();")
Temp löschen

Code: Alles auswählen

DeleteFile(GetTemporaryDirectory()+"bericht-temp.html")
Gruß
gnaps