diff --git a/components/lazreport/source/addons/pdfexport/lr_e_pdf.pas b/components/lazreport/source/addons/pdfexport/lr_e_pdf.pas index e2de21a9a0..c93c14b5a4 100644 --- a/components/lazreport/source/addons/pdfexport/lr_e_pdf.pas +++ b/components/lazreport/source/addons/pdfexport/lr_e_pdf.pas @@ -54,6 +54,7 @@ type constructor Create(AStream: TStream); override; destructor Destroy; override; procedure OnBeginPage; override; + procedure OnEndDoc; override; procedure OnEndPage; override; procedure ShowBackGround(View: TfrView; x, y, h, w: integer); procedure Frame(View: TfrView; x, y, h, w: integer); @@ -166,7 +167,6 @@ end; destructor TfrTNPDFExportFilter.Destroy; begin - PDF.GetPdfDoc.SaveToStream(Stream); PDF.Free; DummyControl.Free; inherited; @@ -195,6 +195,11 @@ begin PRPanel.Height := PPage.Height; end; +procedure TfrTNPDFExportFilter.OnEndDoc; +begin + PDF.GetPdfDoc.SaveToStream(Stream); +end; + procedure TfrTNPDFExportFilter.OnEndPage; begin PDF.Print(PPage); diff --git a/components/lazreport/source/lr_class.pas b/components/lazreport/source/lr_class.pas index 2c77b202e3..ce7b5e7f6f 100644 --- a/components/lazreport/source/lr_class.pas +++ b/components/lazreport/source/lr_class.pas @@ -10890,11 +10890,14 @@ begin end else Result:=false; + //is necessary to destroy the file stream before calling FCurrentFilter.AfterExport + //to ensure the exported file is properly written to the file system + ExportStream.Free; + FCurrentFilter.Stream := nil; if Result then FCurrentFilter.AfterExport; FreeAndNil(FCurrentFilter); - ExportStream.Free; end; procedure TfrReport.FillQueryParams;