anchor.diff:    cmd : string;
     {$ENDIF}
     list : TStringList;
  +  ris : boolean;
   begin
     Result := false;
     if not CheckPoppler_pdftotext_ExePath then
  
positive.code: 
    tempFile := IncludeTrailingPathDelimiter(GetTempDir) + mUtility.GenerateRandomIdString + '.txt';
    {$IFDEF UNIX}
    if RunCommandIndir(ExtractFileDir(aPdfFileName), Poppler_pdftotext_ExePath, [aPdfFileName, tempFile], outputString,  [poStderrToOutPut, poUsePipes, poWaitOnExit]) then
    {$ELSE}
    // UTF8ToWinCP is no longer needed, this bug in TProcess was fixed: https://gitlab.com/freepascal.org/fpc/source/-/issues/29136
    cmd := AnsiQuotedStr(aPdfFileName,'"') + ' ' + AnsiQuotedStr(tempFile,'"');
    if RunCommand(Poppler_pdftotext_ExePath, [cmd], outputString, [poNoConsole, poWaitOnExit]) then
    {$ENDIF}
    begin
      list := TStringList.Create;
      try
        list.LoadFromFile(tempFile);
        aText := list.Text;
      finally
        list.Free;
      end;
      if FileExists(tempFile) then
        DeleteFile(tempFile);
    end
  
negative.code:     class function MergePdfFiles (const aFiles : TStringList; const aDestinationFileName : string): boolean;
      class function ExtractThumbnailOfFrontPageFromPdfAsPng(const aPdfFileName, aThumbnailFileName: string; const aWidth, aHeight : word) : boolean;
      class function ExtractFrontPageFromPdfAsPng(const aPdfFileName, aDestinationFileName: string; const aResolution : integer = 72) : boolean;
      class function ExtractTextFromPdf(const aPdfFileName: string; const aPreserveLayout: boolean; out aText : String): boolean; overload;
      class function ExtractTextFromPdf(const aPdfFileName: string; const aPreserveLayout: boolean; aLines : TStringList): boolean; overload;
      class function GetLastError : String;
    end;
  
  