Мда полтора года пролетело.
Пришлось вернуться к задаче создания PDF из службы.
В этот раз завернул в try except
- Код: Выделить всё
 procedure GoTestPDF();
var file_tmp, filename, msg:string;   fffl:boolean; frReport1: TfrReport;
begin
     CrSection.Enter;
     file_tmp:='T:TESTmaketsTestPDF2file.lrf';
     filename:='T:TESTmaketsTestPDF2file';
     msg:='';
     frReport1:= TfrReport.Create(nil);  
     frReport1.LoadFromFile( file_tmp ); 
     try
     frReport1.ShowProgress:=false;
     fffl:=frReport1.PrepareReport();
     except
           on E: Exception do begin msg:=msg+' / Exception Prepare --- '+E.ToString; end;
     end;
     try
     if fffl then frReport1.ExportTo(TlrPDFExportFilter, filename+'1.pdf');
     except
           on E: Exception do begin msg:=msg+' / Exception Export1 --- '+E.ToString;   end;
     end;
     try
     if fffl then frReport1.ExportTo(TfrTNPDFExportFilter, filename+'2.pdf');
     except
           on E: Exception do begin msg:=msg+' / Exception Export2 --- '+E.ToString;  end;
     end;
 
    writelog(msg);
     CrSection.Leave;
end;  
Файлы TestPDF2file1.pdf, TestPDF2file2.pdf так же создаются пустыми = 0байт
а в логах увидел интересное
- Код: Выделить всё
 2023-06-22_21:05:47.925 -  
/ Exception Export1 --- EThread: CheckSynchronize called from non-main thread "$1198" 
/ Exception Export2 --- EThread: CheckSynchronize called from non-main thread "$1198"
Т.е. есть проблема работы с потоками, но не понятно почему так.
Процедура запускается по таймеру который устанавливается при запуске службы в onDataModuleStart
Добавлено спустя 16 часов 19 минут 22 секунды:Костыли так костыли 
Код перенес в консольное приложение (Программа - Консольная программа на FreePascal со включенными доп.возможностями) creator1pdf.exe
И запускаю ее из службы
- Код: Выделить всё
      procedure GoCreatePDF();
     var str:string;  AProcess: TProcess;
     begin
           AProcess := TProcess.Create(nil);
          Try
          AProcess.Options := AProcess.Options + [poWaitOnExit];
          AProcess.Executable := 'creator1PDF.exe';
          AProcess.Execute;
          Except
                on E: Exception do begin str:= 'Exception --- '+E.ToString;   end;
          end;
          AProcess.Free;
     end;   
writelog(msg);
Работает без ошибок.