From ae186d49342bf02c57de164038cf4ddfafa960d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=97=D0=B0?= =?UTF-8?q?=D0=B1=D0=BB=D0=BE=D1=86=D0=BA=D0=B8=D0=B9?= Date: Thu, 16 Nov 2023 22:22:59 +0300 Subject: [PATCH] gtk2 --- cgi_daemon.pas | 2 ++ cgireport.pas | 3 +++ connectionsdmunit.pas | 4 ++++ exttypes.pas | 1 + lms_cgi_server.lpi | 8 ++++++-- reportdmunit.lfm | 42 +++++++++++++++++++++++++++++++++++++++++- reportdmunit.pas | 47 +++++++++++++++++++++++++++++++---------------- 7 files changed, 88 insertions(+), 19 deletions(-) diff --git a/cgi_daemon.pas b/cgi_daemon.pas index 7f77fd1..2b54a2f 100644 --- a/cgi_daemon.pas +++ b/cgi_daemon.pas @@ -55,6 +55,8 @@ begin self.Logger.AppendContent:=true; self.Logger.LogType := ltFile; self.Logger.FileName := format('%s/server.log',[extractfilepath(paramstr(0))]); + {$ELSE} + self.Logger.LogType := ltSystem; {$ENDIF} self.logger.Identification:='LMS-Report-Service'; self.Logger.Active:=true; diff --git a/cgireport.pas b/cgireport.pas index 14cf0c5..45e1c29 100644 --- a/cgireport.pas +++ b/cgireport.pas @@ -64,6 +64,7 @@ end; procedure TReportCommand.SetStage(ALevel: TLogLevel; Sender: TObject; stageName: string); begin + log(mtInfo,stageName); fcurrentStage:=format('выполняется (%s)',[stageName]); end; @@ -245,6 +246,8 @@ begin end; fResult := TCommandData.Create(0,fileData.size,ReportTitle+'.pdf',['type=application/pdf'],[],fileData); fileData.Seek(0,soFromBeginning); + (fileData as TMemoryStream).SaveToFile(Extractfilepath(paramstr(0))+'out/report.pdf'); + fileData.Seek(0,soFromBeginning); result := true; finally fileData.Free; diff --git a/connectionsdmunit.pas b/connectionsdmunit.pas index 2fd62fb..0b1aec7 100644 --- a/connectionsdmunit.pas +++ b/connectionsdmunit.pas @@ -185,6 +185,7 @@ var i: integer; con: TBaseConnection; begin + log(mtDebug,self,'ClearTerminated'); for i := conlist.Count-1 downto 0 do begin con := TBaseConnection(conlist[i]); @@ -224,6 +225,7 @@ begin setLength(iValues,0); if ACommand='stop' then begin + log(mtDebug,self,'stop'); ClearConnections; Input.Terminate; fRunning:=false; @@ -354,9 +356,11 @@ begin begin if cmd.Status=StatusComplete then begin + log(mtDebug,self,'result ready'); cmd.Results.AssignTo(Code,RetValue,Answer,rValues,iValues,ByteData); cmd.Done; result := true; + log(mtDebug,self,'result ready ok '); end else begin diff --git a/exttypes.pas b/exttypes.pas index b0f3662..fd672d9 100644 --- a/exttypes.pas +++ b/exttypes.pas @@ -443,6 +443,7 @@ procedure TCommandData.AssignTo(out ACode: DWORD; out AParam: QWord; out var i: integer; begin + ACode := Code; AParam := Param; AName := Name; diff --git a/lms_cgi_server.lpi b/lms_cgi_server.lpi index e1a02c9..2f42746 100644 --- a/lms_cgi_server.lpi +++ b/lms_cgi_server.lpi @@ -14,8 +14,9 @@ - + + @@ -48,10 +49,11 @@ - + + @@ -147,7 +149,9 @@ + + diff --git a/reportdmunit.lfm b/reportdmunit.lfm index 3335fab..5cc7539 100644 --- a/reportdmunit.lfm +++ b/reportdmunit.lfm @@ -5,7 +5,7 @@ object ReportDM: TReportDM VerticalOffset = 317 Width = 330 object frxReport: TfrxReport - Version = '2023.1' + Version = '2023.3.3' DotMatrixReport = False EngineOptions.SilentMode = True EngineOptions.NewSilentMode = simSilent @@ -22,6 +22,7 @@ object ReportDM: TReportDM '' 'end.' ) + OnEndDoc = frxReportEndDoc OnLoadTemplate = frxReportLoadTemplate OnLoadDetailTemplate = frxReportLoadDetailTemplate Left = 176 @@ -31,10 +32,12 @@ object ReportDM: TReportDM Style = <> end object frxPDFExport1: TfrxPDFExport + ExportNotPrintable = True UseFileCache = True ShowProgress = True OverwritePrompt = False DataOnly = False + EmbeddedFonts = True EmbedFontsIfProtected = False InteractiveFormsFontSubset = 'A-Z,a-z,0-9,#43-#47 ' OpenAfterExport = False @@ -97,4 +100,41 @@ object ReportDM: TReportDM Left = 186 Top = 155 end + object frxHTMLExport1: TfrxHTMLExport + UseFileCache = True + ShowProgress = True + OverwritePrompt = False + DataOnly = False + OpenAfterExport = False + FixedWidth = True + Background = False + Centered = False + EmptyLines = True + Print = False + PictureType = gpPNG + Outline = False + Left = 252 + Top = 27 + end + object frxHTML4DivExport1: TfrxHTML4DivExport + UseFileCache = True + ShowProgress = True + OverwritePrompt = False + DataOnly = False + OpenAfterExport = False + MultiPage = False + Formatted = False + PictureFormat = pfPNG + UnifiedPictures = True + Navigation = False + EmbeddedPictures = False + EmbeddedCSS = False + Outline = False + HTML5 = False + AllPictures = False + ExportAnchors = True + PictureTag = 0 + Left = 255 + Top = 75 + end end diff --git a/reportdmunit.pas b/reportdmunit.pas index 1cbb2d7..3790d5b 100644 --- a/reportdmunit.pas +++ b/reportdmunit.pas @@ -5,11 +5,12 @@ unit reportDMUnit; interface uses - Classes, SysUtils, frxClass, frxExportPDF, frxExportODF, - xpMemParamManagerUnit, AbUnzper, AbZipper, frxDBSet, cgiDM,extTypes; + Classes, SysUtils, frxClass, frxExportPDF, frxExportODF, frxExportHTML, + frxExportHTMLDiv, xpMemParamManagerUnit, AbUnzper, AbZipper, frxDBSet, cgiDM, + extTypes; type - TExportFileType = (ftPDF,ftRTF,ftXLS);//(ftPDF,ftMail,ftRTF,ftXLS,ftHTML); + TExportFileType = (ftPDF,ftRTF,ftXLS,ftHTML);//(ftPDF,ftMail,ftRTF,ftXLS,ftHTML); { TReportDM } TReportQuery=class; @@ -40,10 +41,13 @@ type TReportDM = class(TDataModule) AbUnZipper1: TAbUnZipper; AbZipper1: TAbZipper; + frxHTML4DivExport1: TfrxHTML4DivExport; + frxHTMLExport1: TfrxHTMLExport; frxODSExport1: TfrxODSExport; frxODTExport1: TfrxODTExport; frxPDFExport1: TfrxPDFExport; frxReport: TfrxReport; + procedure frxReportEndDoc(Sender: TObject); function frxReportLoadDetailTemplate(Report: TfrxReport; const TemplateName: String; const AHyperlink: TfrxHyperlink): Boolean; procedure frxReportLoadTemplate(Report: TfrxReport; @@ -83,6 +87,7 @@ type function LoadReportTemplate(OnHash: TCalcHashProc): string; procedure SaveReportTemplate(hash: string;OnHash: TCalcHashProc); procedure CopyReportVariables(AVariables, AParam: TxpMemParamManager); + procedure LogExport(Sender: TObject); public RecordID: integer; NidbData: TNIDBDM; @@ -187,6 +192,11 @@ begin NidbData.log(mtDebug,self,'LoadDetailTemplate '+TemplateName); end; +procedure TReportDM.frxReportEndDoc(Sender: TObject); +begin + NidbData.log(mtDebug,Sender,'TReportDM.frxReportEndDoc');; +end; + procedure TReportDM.CreateDBDataSet(Query: TReportQuery; EditReport: Boolean); var i: integer; @@ -354,13 +364,8 @@ procedure TReportDM.frxReportPreview(Sender: TObject); var Report: TfrxReport; begin - inherited; - try - Report := Sender as TfrxReport; - Report.PreviewForm.BringToFront; - except on e: Exception do - NidbData.log(mtError,self,e.message); - end; + NidbData.log(mtDebug,Sender,'TReportDM.frxReportPreview');; + inherited; end; procedure TReportDM.LoadQueries; @@ -652,6 +657,11 @@ begin end; +procedure TReportDM.LogExport(Sender: TObject); +begin + NidbData.log(mtDebug,Sender,'export-started'); +end; + procedure TReportDM.ExportReport(ExportType: TExportFileType; Data: TStream; @@ -696,7 +706,7 @@ begin try frxReport.PrepareReport(False); frxReport.OnPreview := @frxReportPreview; - + frxReport.SaveToFile(Extractfilepath(paramstr(0))+'out/report.fr3'); except on e: Exception do begin NidbData.logError(self,e,'frxReport.PrepareReport'); @@ -705,10 +715,14 @@ begin end; case ExportType of - ftPDF: flt := TfrxPDFExport.Create(self); - ftRTF: flt := TfrxODTExport.Create(self); - ftXLS: flt := TfrxODSExport.Create(self); + ftPDF: flt := frxPDFExport1; + ftRTF: flt := frxODTExport1; + ftXLS: flt := frxODSExport1; + ftHTML: flt := frxHTML4DivExport1; end; + flt.OnBeforeExport:=@LogExport; + flt.OnBeginExport:=@LogExport; + try if assigned(OnStage) then OnStage(mtExtra,self,'выгрузка'); @@ -718,7 +732,8 @@ begin flt.FileName:=''; flt.ShowProgress := false; try - frxReport.Export(flt); + if not frxReport.Export(flt) then + NidbData.log(mtWarning,self,'ERROR EXPORT PDF'); except on e: Exception do begin @@ -727,7 +742,7 @@ begin end; end; finally - flt.Free; + //flt.Free; end; end; //FreeContainer;