List & Label - HTML "Ausgabe"

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

List & Label - HTML "Ausgabe"

Beitrag von AUGE_OHR »

hi,

kann man LL Report als HTML ausgeben ? wenn ja wie ?

grundsätzliche Frage : wie bekomme ich eine DBF (formatiert) nach HTML

... Array auffüllen, Excel Tabelle machen und dann als HTML ?
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: List & Label - HTML "Ausgabe"

Beitrag von Tom »

Hallo, Jimmy.

1. Ja, kann man. Es geht sogar "MHTML" (eingebettete Grafiken). Der Export funktioniert wie derjenige nach PDF, RTF, TIFF usw. Man setzt die entsprechenden Exportoptionen, statt einen Druckjob zu erzeugen. Die Druckroutine ist ansonsten dieselbe. Benötigst Du dafür Beispielcode?

2. HTML ist eigentlich simpel. Ich habe das gelöst, indem ich eine Templatedatei (Tabelle, DIV-Container) erzeugt habe, die dann die Spaltenüberschriften setzt und die Spaltenanteile entsprechend wiederholt. Also quasi: Formulare im HTML-Editor erzeugen, Platzhalter einsetzen und dann bei der Dateierzeugung einfach substituieren. Bei Datenzeilen natürlich wiederholt. Wenn man viele Spalten hat, wird das natürlich irgendwann unschön.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: List & Label - HTML "Ausgabe"

Beitrag von AUGE_OHR »

Tom hat geschrieben:1. Ja, kann man. Es geht sogar "MHTML" (eingebettete Grafiken). Der Export funktioniert wie derjenige nach PDF, RTF, TIFF usw. Man setzt die entsprechenden Exportoptionen, statt einen Druckjob zu erzeugen. Die Druckroutine ist ansonsten dieselbe. Benötigst Du dafür Beispielcode?
JA, bitte ...
ich weiss nicht "wonach" ich suchen soll ...
Tom hat geschrieben: 2. HTML ist eigentlich simpel. Ich habe das gelöst, indem ich eine Templatedatei (Tabelle, DIV-Container) erzeugt habe, die dann die Spaltenüberschriften setzt und die Spaltenanteile entsprechend wiederholt. Also quasi: Formulare im HTML-Editor erzeugen, Platzhalter einsetzen und dann bei der Dateierzeugung einfach substituieren. Bei Datenzeilen natürlich wiederholt. Wenn man viele Spalten hat, wird das natürlich irgendwann unschön.
ah, ja ... also brauche ich erstmal eine "Vorlage" und ersetze dann die Platzhalter. hört sich ganz einfach an ...

aber wenn ich aus LL gleich meinen Report "nach HTML bringen kann" wäre mir das noch lieber.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: List & Label - HTML "Ausgabe"

Beitrag von AUGE_OHR »

hi,

nachdem ich nun von Tom paar Tips bekommen habe, habe ich die gleich ausprobiert.

Ich benutze als "Vorlage" die Devcon 2007 Unterlagen vom Tom´s Referat und habe da nun ein Problem :

Code: Alles auswählen

#include "cmbtll13.ch" // defines for L&L printing system
#include "cmbtls.ch" // defines for L&L storage system
#include "DLL.CH"
#include "XBP.CH"
#include "COMMON.CH"
#include "gra.ch"

STATIC hJob  := 0
STATIC hDll  := 0
STATIC hDlls := 0
STATIC aBMPHandle := {}

MEMVAR zPATH

PROCEDURE LL13_Init(lHTML)
DEFAULT lHTML TO .F.

hDll  := DllLoad("CMLL13.DLL") // change this if you have a different L&L version
hDlls := DllLoad("CMLS13.DLL") // and this also

IF hDll == 0
   * app quits if L&L cannot be loaded
   MsgBox("Cannot load DLLs","List & Label init DLL")
   Quit
ELSE

   LSLoadTemplates(hDlls) // storage  system, DLL functions wrapper
   LLLoadTemplates(hDll)  // printing system, DLL functions wrapper

   LlSetOptionString(-1,LL_OPTIONSTR_LICENSINGINFO,'blabla') // license string, remove for demo

   LlSetDebug(LL_DEBUG_CMBTLL)

   hJob := LlJobOpen(CMBTLANG_GERMAN) // open job with GERMAN

  * some options for Preview
   LlSetOption(hJob, LL_OPTION_ESC_CLOSES_PREVIEW, 1)

   LlSetDlgboxMode(LL_DLGBOXMODE_ALT9)
   LlSetOption(hJob, LL_OPTION_UISTYLE, LL_OPTION_UISTYLE_OFFICEXP)

   LlSetOption(hJob, LL_OPTION_MULTIPLETABLELINES, 1)

// Hallo, Jimmy.
// 1. Am Beginn der Druckroutine m³ssen z.B. solche Optionen gesetzt werden:

   IF lHTML
      LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "HTML", "Export.File","MYPREIS.HTM")
      LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "HTML", "Export.Path",ConvToAnsiCP(trim(zpath)))

      LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "HTML", "Export.Quiet","1")
      LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "HTML", "Export.ShowResult","1")
      LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "HTML", "Verbosity.Table.Frames","2")
   ENDIF

ENDIF
RETURN
hoffe das dass soweit richtig ist ?

so nun kommt das "Problem" : Ich habe die "PreView" an und warte bis er fertig ist, dann wird der
2nd Drucker Button (alle Seiten) angezeigt und damit "drucke" ich.
dafür nutze ich LlPrintWithBoxStart() *********** FRAGE HIER ************

Code: Alles auswählen

PROCEDURE LL_PrintList(lFromDb,;
                       cDataSource,;
                       oOwner,;
                       cFormName,;
                       bCondition,;
                       lFromTop,;
                       lDesigner,;
                       lPreview,;
                       aHeaders,;
                       lHTML)
...
IF lPreview
  * set path for preview files to Temp
  LlPreviewSetTempPath(hJob, TempPath())
ENDIF

* init field definitions for L&L
LlDefineFieldStart(hJob)

* publish fields of first record/entry for designer
IF lFromDb
  * database
  LlPublishData(.T.,hJob,aField,aType,aLen,aDec)
ELSE
  * array
  LlPublishData(.T.,hJob,aField,aType,aLen,aDec,cDataSource,1)
ENDIF

* publish some vars needed around
LlDefineVariableExt(hJob,"company_name","Yiu-Software",LL_TEXT,0)

//
// _xDatum() ist eine eingene Function
// welche ein über DATUM() einstellbares cDATE einhält
//
LlDefineVariableExt(hJob,"JOB_Date",_xDatum(),LL_TEXT,0)
LlDefineVariableExt(hJob,"JOB_Path",zPATH,LL_TEXT,0)

* create number field (iterating)
LlDefineFieldExt(hJob,"number",Ltrim(Str(nNumber,12,0)),LL_NUMERIC,0)
* initial definitions completed

* call designer if option is set
IF lDesigner
  LlDefineLayout(hJob, oOwner:GetHWND(),;
    "Designer", LL_PROJECT_LIST, cFormName)
ENDIF
* end designer

* init print routine
*********** FRAGE HIER ************
// 2. In "LlPrintStart" oder "LlPrintWithBoxStart" muss als Projekttyp statt "LL_PRINT_NORMAL" "LL_PRINT_EXPORT" angegeben werden.
 
IF lHTML
   nRet := LlPrintWithBoxStart(hJob,;
              LL_PROJECT_LIST,;
              cFormName,;
              if(lPreview,LL_PRINT_PREVIEW,LL_PRINT_EXPORT),; // change to EXPORT
              LL_BOXTYPE_NORMALMETER,;
              oOwner:GetHWND(),;
              if(lPreview,"Preview","Printing"))

// 3. Nach dem Aufruf von "LlPrintStart" oder "LlPrintWithBoxStart" muss das hier geschehen: LlPrintSetOptionString(hJob,LL_PRNOPTSTR_EXPORT,"HTML")

   // set Option
   LlPrintSetOptionString(hJob,LL_PRNOPTSTR_EXPORT,"HTML")

ELSE
   nRet := LlPrintWithBoxStart(hJob,;
              LL_PROJECT_LIST,;
              cFormName,;
              if(lPreview,LL_PRINT_PREVIEW,LL_PRINT_USERSELECT),; // change LL_PRINT_USERSELECT to LL_PRINT_NORMAL to print on default printer
              LL_BOXTYPE_NORMALMETER,;
              oOwner:GetHWND(),;
              if(lPreview,"Preview","Printing"))
ENDIF

* start job
nRet := LlPrint(hJob)

* printing loop for db/array conents
DO WHILE nRet = 0 .and. IF(lFromDb,!Eof(),nNumber < Len(cDataSource))
  * inc number
  nNumber ++
  LlDefineFieldExt(hJob,"number",Ltrim(Str(nNumber,12,0)),LL_NUMERIC,0)

  * publish fields
  IF lFromDb
    * database
    LlPublishData(.T.,hJob,aField,aType,aLen,aDec)
  ELSE
    * array
    LlPublishData(.T.,hJob,aField,aType,aLen,aDec,cDataSource,nNumber)
  ENDIF

  * update progress box
  LlPrintSetBoxText(hJob, if(lPreview,"Preview","Printing"), ( (100*nNumber)/nCount ))

  * print fields
  nRet:=LlPrintFields(hJob)
  DO WHILE nRet=LL_WRN_REPEAT_DATA
    LlPrint(hJob)
    nRet := LlPrintFields(hJob)
  ENDDO
  IF lFromDb
     DO WHILE .T.
        nPosi := AScan( aBMPHandle, {|x| x[1] == RECNO()} )
        IF nPosi > 0
           IF aBMPHandle[nPosi][2] > 0
              DeleteObject(aBMPHandle[nPosi][2])
           ENDIF
           ADEL(aBMPHandle,nPosi)
           ASize( aBMPHandle, Len(aBMPHandle)-1 )
        ELSE
           EXIT
        ENDIF
     ENDDO

     DbSkip(1)
  ENDIF

ENDDO
* end of printing loop

* finalize print job
nRet:=LlPrintFieldsEnd(hJob)

DO WHILE nRet=LL_WRN_REPEAT_DATA
  nRet:=LlPrintFieldsEnd(hJob)
ENDDO
LlPrintEnd(hJob, 0)

IF lPreview
  LlPreviewDisplayEx(hJob, cFormName, TempPath(), oOwner:GetHWND(),LL_PRVOPT_PRN_ASKPRINTERIFNEEDED)
  LlPreviewDeleteFiles(hJob, cFormName, TempPath())
ENDIF

* restore db record pointer (EoF() now!)

IF lFromDb
  DbGoto(nDbRec)
ENDIF

* maybe: restore selected workarea

RETURN
ich bin mir nicht sicher ob ich aus einem "PreView" den HTML Export starten kann ? wenn ich auf den Button clicke kommen nur meine Drucker ... ?

was habe ich noch nicht "begriffen" ... wie "druckt" man einen HTML "Export" ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: List & Label - HTML "Ausgabe"

Beitrag von AUGE_OHR »

also "Preview" ist nicht bei Export !

nun habe ich eine HTML Seite erzeugt (Code folgt später), aber wieder ein Problem :
1027 26/30 Öйú´óϺ Riesengarn.CHINA 26/30 o.Sch. 6x2Kg
1028 31/40 Öйú´óϺ Riesengarn.CHINA 31/40 o.Sch. 6x2Kg
1072 26/30 Ô½ÄÏ Riesengarn.Vietnam 26/30 BT
ihr seht es wohl schon ... aber das ganze geht doch auf dem Drucker und mit PDF Druck Treiber ...

Code: Alles auswählen

</table>
</td><td valign="middle" class="tdx" width="134" height="22" style="border-left-width:1px; border-left-style:solid; border-left-color:rgb(0,0,0); border-right-width:1px; border-right-style:solid; border-right-color:rgb(0,0,0); border-top-width:1px; border-top-style:solid; border-top-color:rgb(0,0,0); border-bottom-width:1px; border-bottom-style:solid; border-bottom-color:rgb(0,0,0);"><table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr><td class="tdx" align="left"><font face="Arial Unicode MS" color="#000000" size="2">26/30 &Ouml;&ETH;&sup1;&uacute;&acute;&oacute;&Iuml;&ordm;</font></td></tr>
ich "denke" das dies die HTML Stelle sein müsste. Da steht doch was mit "Arial Unicode MS" ?

jemand eine Idee ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: List & Label - HTML "Ausgabe"

Beitrag von AUGE_OHR »

Code: Alles auswählen

PROCEDURE LL13_Init(lHTML)
DEFAULT lHTML TO .F.

hDll  := DllLoad("CMLL13.DLL") //change this if you have a different L&L version
hDlls := DllLoad("CMLS13.DLL") // and this also

IF hDll == 0
   * app quits if L&L cannot be loaded
   MsgBox("Cannot load DLLs","List & Label init DLL")
   Quit
ELSE

   LSLoadTemplates(hDlls) // storage  system, DLL functions wrapper
   LLLoadTemplates(hDll)  // printing system, DLL functions wrapper

   LlSetOptionString(-1,LL_OPTIONSTR_LICENSINGINFO,'blabla') // license string

   LlSetDebug(LL_DEBUG_CMBTLL)

   hJob := LlJobOpen(CMBTLANG_GERMAN)  // open job with GERMAN

   LlSetOption(hJob, LL_OPTION_ESC_CLOSES_PREVIEW, 1)  // for Prewiev

   LlSetDlgboxMode(LL_DLGBOXMODE_ALT9)
   LlSetOption(hJob, LL_OPTION_UISTYLE, LL_OPTION_UISTYLE_OFFICEXP)

   LlSetOption(hJob, LL_OPTION_MULTIPLETABLELINES, 1)

   IF lHTML
      LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "HTML","Export.File","MYPREIS.HTM")
      LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "HTML","Export.Path",ConvToAnsiCP(trim(zpath)))
      LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "HTML","Export.Quiet","1")
      LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "HTML","Export.ShowResult","1")
      LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "HTML","Verbosity.Table.Frames","2")
   ENDIF

ENDIF
RETURN


PROCEDURE LL_PrintList(lFromDb,;
                       cDataSource,;
                       oOwner,;
                       cFormName,;
                       bCondition,;
                       lFromTop,;
                       lDesigner,;
                       lPreview,;
                       aHeaders,;
                       lHTML)
...
* init print routine
IF lHTML
   nRet := LlPrintWithBoxStart(hJob,;
                            LL_PROJECT_LIST,;
                            cFormName,;
                            LL_PRINT_EXPORT,;                  // Export to
                            LL_BOXTYPE_STDWAIT,;
                            oOwner:GetHWND()  ,;
                            "Export to  HTML...",;
                            .F.,zPath)

   LlPrintSetOptionString(hJob,LL_PRNOPTSTR_EXPORT,"HTML")

gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: List & Label - HTML "Ausgabe"

Beitrag von AUGE_OHR »

nur als Ergänzung : ich habe das ganze auch auf einen chinesischem OS() versucht (angepasst) und das selbe "Problem".
Preview und drucken geht, aber bei HTML Export wieder das selbe "Problem" :(
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: List & Label - HTML "Ausgabe"

Beitrag von Tom »

Ich nehme an, dass Du zusätzlich ein entsprechendes Sprachpaket von L&L/Combit benötigst.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: List & Label - HTML "Ausgabe"

Beitrag von AUGE_OHR »

Tom hat geschrieben:Ich nehme an, dass Du zusätzlich ein entsprechendes Sprachpaket von L&L/Combit benötigst.
ich habe das nun in L&L Forum gestellt.

ich habe ja nun, über Excel, die HTML Ausgabe gemacht. wenn ich mir den HTML Code ansehe mit
einem Hexeditor sehe ich bei Excel auch "die" chinesischen Zeichen und nicht sowas wie bei L&L
&Atilde;&Iuml;&frac14;&Oacute;&Agrave;&shy;

es gibt auch leider kein chinesische "Language" File CMBTLANG_CHINA zu erwerben ... :(
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: List & Label - HTML "Ausgabe"

Beitrag von AUGE_OHR »

hi,

so ich habe das Notebook wieder und bin wieder bei der HTML Ausgabe.

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Export to HTML...</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
so sehen die ersten Zeilen aus wenn ich die auf einem "German" OS() generiere.
Man beachte charset=windows-1252

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Export to HTML...</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
und charset=GB2312 bekomme ich auf der chinesischen W2Ksp4 Maschine, was RICHTIG ist !!!

nun dachte ich ja ich hätte es und bin nun auf dem Notebook mit Win XP
und da bekomme ich charset=ISO-8859-1 statt charset=GB2312 ... :-k

mein Liste & Label Code

Code: Alles auswählen

   IF lHTML
      LlSetOption(hJob,LL_OPTION_LCID, 20936) // (Chinesisch, vereinfacht GB2312)

      LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "HTML", ...)
wie bekomme ich "dauerhaft" charset=GB2312 in den "Header" der *.HTML ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: List & Label - HTML "Ausgabe"

Beitrag von AUGE_OHR »

AUGE_OHR hat geschrieben:wie bekomme ich "dauerhaft" charset=GB2312 in den "Header" der *.HTML ?
Antwort aus dem List & Label Forum
Mehrere Alternativen:

a) LlXSetParameter(hJob,LL_LLX_EXTENSIONTYPE_EXPORT,"HTML","HTML.Charset","GB2312")

b) LL_OPTION_CODEPAGE auf 936 (betrifft dann auch alle internen
Umwandlungen von DBCS/Unicode im LL Core)

Paulchen
ausprobiert und funktioniert :)
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: List & Label - HTML "Ausgabe"

Beitrag von Martin Altmann »

Moin,
ich habe das mal ins "richtigere" Unterforum verschoben!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten