FUNCTION HTML_Brief( cFile, cFormular, cFont, cFSize, cFormSeite, cZeileCM, cNotiz_Bez ) //18.10.2022 cZeileMM -> cZeileCM // cNotiz_Bez LOCAL nZei := 8, nAnf, CR := Chr(13), LF := Chr(10) LOCAL nHandle, cBuffer, nBytes, cText, cNeuTxt := "" LOCAL cDatv := cDatver LOCAL nFSize, nFHoehe, nFBreite LOCAL nZeileMM LOCAL cSZeit, nSZeit, cFZeit, nFZeit, nZ //30.12.2022 15:29 warten aufs PDF DEFAULT cFormular TO "" DEFAULT cFont TO '"Times New Roman", serif' DEFAULT cFSize TO '18pt' DEFAULT cFormSeite TO '1cm 1cm 1cm 2cm' DEFAULT cZeileCM TO '0.14' //11.10.2022 14:58 Zeilenabstand PRIVATE cBuero //11.10.2022 16:56 PRIVATE fr VariFunkErsatz nFSize := Val(cFSize) nFHoehe := nFSize * 0.352778 nFBreite := nFSize * 0.2 // 0.2 ist ein gesch„tzter vorl„ufiger Wert nZeileMM := IIf(Val(cZeileCM)<0.2, nFHoehe * Val(cZeileCM)*10, Val(cZeileCM)*10) // DO WHILE At("\",cDatv) > 0 // cDatv := Stuff( cDatv, At("\",cDatv), 1, "/" ) // ENDDO IF !"HDBE"$Upper(cFormular) cFormular := cDatv + cFormular ENDIF // Zur Vermeidung von Kollision verschiedener Drucke vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv // Test: ist bereits die Datei HTML_Brief.html auf diesem PC ge”ffnet? IF FExists("c:\hdbe\HTML_Brief.html") //22.12.2022 19:13 nHandle := FOpen( "c:\hdbe\HTML_Brief.html", FO_EXCLUSIVE ) IF nHandle = -1 //+ Die Datei ist bereits auf diesem PC ge”ffnet FClose(nHandle) msgbox("Es ist bereits ein HTML_Brief.html offen!"+CR+LF+"Bitte OfficeWriter schlieáen, dann nochmal versuchen!") RETURN .F. ELSE FClose(nHandle) ENDIF ENDIF //-------------------------------- // Test: ist bereits die Datei HTML_Brief.pdf auf diesem PC ge”ffnet? IF FExists("c:\hdbe\HTML_Brief.pdf") //22.12.2022 19:13 nHandle := FOpen( "c:\hdbe\HTML_Brief.pdf", FO_EXCLUSIVE ) IF nHandle = -1 //+ Die Datei ist bereits auf diesem PC ge”ffnet FClose(nHandle) msgbox("Es ist bereits ein HTML_Brief.PDF offen!"+CR+LF+"Bitte AdobeReader schlieáen, dann nochmal versuchen!") RETURN .F. ELSE FClose(nHandle) ENDIF ENDIF //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ IF Len(cFile) > 50 cText := cFile cFile := "HTML_Brief" ELSE nHandle := FOpen( cFile, FO_READ ) cBuffer := Space(3000) nBytes := FRead( nHandle, @cBuffer, 3000 ) cText := AllTrim(cBuffer) FClose( nHandle ) ENDIF // Test mit automatischem Ausfllen bei bestimmtem Formular: IF "KSO_GhAusz.png"$cFormular cFont := "Times New Roman" cFSize := "14pt" cFormSeite := "0cm 0cm 0cm 0cm" nZeileMM := 4.9 cText := CR+LF+CR+LF + Space(65) + "Auftrag: " + Str(1->auftrnr,6,0) + CR+LF+CR+LF+CR+LF+CR+LF+CR+LF+CR+LF cText += Space(35) + Trim(1->vorname) + " " + Trim(1->name) + CR+LF ENDIF IF cFile == "c:\hdbe\dHTML.abr" .OR. cFile == "c:\hdbe\dHTML.mahn" cText := StrTran( cText, CR+LF+" ", CR+LF ) // linken Rand zu NULL machen ENDIF // vermutlich hier berflssig, weil schon in Inditext() 08.11.2022 10:42 cBuero := SubStr(cBU5,At(" ",cBU5)+1) cRufnummer := cBU6 IF 'Temp'$cFile // 11.12.2022 17:14 wenn im Text Formatierungen vorkommen (bl_r,bl_a etc...) cNeuTxt := ; ''+CR+LF+; ''+CR+LF+; ''+CR+LF+; ' '+CR+LF+; ' '+cFile+''+CR+LF+; ' '+CR+LF+; ' '+CR+LF+; ' '+CR+LF+; ''+CR+LF+; IIf( Upper(Right(cFormular,4))==".PNG", ; '',; '')+CR+LF+; '
'	//+CR+LF+;
	ELSE
	   cNeuTxt := ;
         ''+CR+LF+;
         ''+CR+LF+;
         ''+CR+LF+;
         '	'+CR+LF+;
         '	'+cFile+''+CR+LF+;
         '	'+CR+LF+;
         '	'+CR+LF+;
         '	'+CR+LF+;
         ''+CR+LF+;
         IIf( Upper(Right(cFormular,4))==".PNG", ;
         ''+CR+LF+;
         '
'+CR+LF+;
         '', ;
         ''+CR+LF+;
         '
' )
	ENDIF
	
   cNeuTxt += ConvToAnsiCP(cText)
         
   cNeuTxt += '
' cNeuTxt := StrTran( cNeuTxt, "", " ") // durch <> entstehen 7 Blanks IF !FExists("c:\hdbe\HTML_Brief.html") nHandle := FCreate("c:\hdbe\HTML_Brief.html") FClose(nHandle) Sleep(100) ENDIF nHandle := FOpen("c:\hdbe\HTML_Brief.html",FO_READWRITE) nBytes := FRead( nHandle, @cBuffer, 20000 ) nBytes := Max(10000,nBytes) FSeek(nHandle, 0) nBytes := FWrite( nHandle, PadR(cNeuTxt,nBytes," ") ) nBytes := FClose( nHandle ) IF AppKeyState(65553)==1 .OR. "INPUT"$cNeuTxt // zusammen mit Strg-Taste //19.12.2022 15:13 mit LibreOffice zu PDF konvertieren //geht nicht IF RunShell (' /C START C:\HDBE\swriter.libre.lnk --headless --convert-to pdf:"writer_pdf_Export" C:\HDBE\HTML_Brief.html',cComCom,.T.) //geht nicht IF RunShell (" /C START C:\Progra~1\LibreOffice\program\swriter.exe --headless --convert-to pdf:'writer_pdf_Export' C:\HDBE\HTML_Brief.html",cComCom,.T.) // so nicht! komplette Pfadangabe statt Link IF RunShell (' --headless --convert-to pdf:"writer_pdf_Export" --outdir "C:\HDBE" C:\HDBE\HTML_Brief.html', 'C:\HDBE\swriter.libre.lnk',.T.) == 0 IF FExists('C:\Program Files\LibreOffice\program\swriter.exe') dHeute := DATE() //02.01.2023 13:03 cSZeit := Time() //30.12.2022 15:36 nSZeit := Val(SubStr(cSZeit,1,2))*3600 + Val(SubStr(cSZeit,4,2))*60 + Val(SubStr(cSZeit,7,2)) IF RunShell (' --headless --convert-to pdf:"writer_pdf_Export" --outdir "C:\HDBE" C:\HDBE\HTML_Brief.html', 'C:\Program Files\LibreOffice\program\swriter.exe',.T.) == 0 // geht mit OpenOffice nicht! IF RunShell (' -headless -convert-to pdf:"writer_pdf_Export" C:\HDBE\HTML_Brief.html', 'C:\Program Files (x86)\OpenOffice 4\program\swriter.exe',.T.) //30.12.2022 15:36 statt sleep(300): dFDatum := Directory("C:\HDBE\HTML_Brief.pdf")[1,F_WRITE_DATE] //02.01.2023 13:03 cFZeit := Directory("C:\HDBE\HTML_Brief.pdf")[1,F_WRITE_TIME] nFZeit := Val(SubStr(cFZeit,1,2))*3600 + Val(SubStr(cFZeit,4,2))*60 + Val(SubStr(cFZeit,7,2)) nZ := 0 DO WHILE (nSZeit > nFZeit .OR. DATE() > dFDatum ) .AND. .NOT. nZ > 20 sleep(100) cFZeit := Directory("C:\HDBE\HTML_Brief.pdf")[1,F_WRITE_TIME] nFZeit := Val(SubStr(cFZeit,1,2))*3600 + Val(SubStr(cFZeit,4,2))*60 + Val(SubStr(cFZeit,7,2)) nZ++ ENDDO IF nZ > 20 msgbox("Achtung: Die PDF-DAtei ist vermutlich von einem frheren Fall!") ELSEIF FExists('C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe') RunShell (' /N C:\HDBE\HTML_Brief.pdf','C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe',.T.) ELSEIF FExists('C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe') RunShell (' /N C:\HDBE\HTML_Brief.pdf','C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe',.T.) ELSE msgbox("Der Adobe Reader DC ist nicht ordentlich installiert!") ENDIF ENDIF ELSE msgbox("LibreOffice ist nicht ordentlich installiert") ENDIF ELSE // von Hand erzeugt „hnlich der Function Lfn2Sfn(): // cTextProg := "C:\Progra~1\LibreOffice\program\swriter.exe" // IF "LO"$Upper(cTextProg) // RunShell (" /C START C:\Progra~1\LibreOffice\program\swriter.exe --nologo c:\hdbe\HTML_Brief.html",cComCom,.T.) //-nologo mit einem '-' fr AOO-Schnellstart // ELSE // RunShell (" /C START C:\hdbe\"+cTextProg+" -nologo c:\hdbe\HTML_Brief.html",cComCom,.T.) //-nologo mit einem '-' fr AOO-Schnellstart // ENDIF //26.08.2023 20:37 das muss in dieser Reihenfolge (lt. Alaska): RunShell ( "c:\hdbe\HTML_Brief.html","c:\Program Files\LibreOffice\program\swriter.exe",.T.) //01.09.2023 .T. ENDIF IF !Empty(cNotiz_Bez) cVermerk := ConvToOEMCP(cNotiz_Bez) + ": "+DtoC(DATE()) + ", " + BriefAdresse(2,"A") // 2==1-zeilig, "A"==Ansprechpartner IF !cVermerk$1->notiz 1->(DbRlock()) 1->notiz += CRLF + cVermerk 1->(DbCommit()) ENDIF ENDIF RETURN .T.