anchor.diff:  var
     FLastError : String;
   
  +function CheckCLU (const aCLU : String): boolean;
  +{$IFDEF UNIX}
  +var
  +  cmd, outputString : String;
  +{$ENDIF}
  +begin
  +  {$IFDEF WINDOWS}
  +  Result := false;
  +  if not FileExists(aCLU) then
  +  begin
  +    FLastError := SPoppler_error_missing_clu +  aCLU;
  +    exit;
  +  end;
  +  Result := true;
  +  {$ELSE}
  +  {$IFDEF UNIX}
  +  cmd := '-v ' + aCLU;
  +  Result := RunCommand('/bin/bash',['-c','command', cmd],outputString, [poNoConsole, poWaitOnExit]);
  +  if not Result then
  +    FLastError := SPoppler_error_missing_clu + aCLU;
  +  {$ELSE}
  +  FLastError := SPoppler_error_missing_clu +  aCLU;
  +  Result := false;
  +  {$ENDIF}
  +  {$ENDIF}
  +end;
  +
   { TPopplerToolbox }
   
   class function TPopplerToolbox.CheckPoppler_pdfunite_ExePath: boolean;
   begin
  -  Result := false;
  -  if not FileExists(Poppler_pdfunite_ExePath) then
  -  begin
  -    FLastError := SPoppler_pdfunite_error_unable_to_run + Poppler_pdfunite_ExePath;
  -    exit;
  -  end;
  -  Result := true;
  +  Result := CheckCLU(Poppler_pdfunite_ExePath);
   end;
   
   class function TPopplerToolbox.CheckPoppler_pdfseparate_ExePath: boolean;
   begin
  -  Result := false;
  -  if not FileExists(Poppler_pdfseparate_ExePath) then
  -  begin
  -    FLastError := SPoppler_pdfseparate_error_unable_to_run + Poppler_pdfseparate_ExePath;
  -    exit;
  -  end;
  -  Result := true;
  +  Result := CheckCLU(Poppler_pdfseparate_ExePath);
   end;
   
   class function TPopplerToolbox.CheckPoppler_pdftoppm_ExePath: boolean;
   begin
  -  Result := false;
  -  if not FileExists(Poppler_pdftoppm_ExePath) then
  -  begin
  -    FLastError := SPoppler_pdftoppm_error_unable_to_run + Poppler_pdftoppm_ExePath;
  -    exit;
  -  end;
  -  Result := true;
  +  Result := CheckCLU(Poppler_pdftoppm_ExePath);
   end;
   
   class function TPopplerToolbox.CheckPoppler_pdftotext_ExePath: boolean;
   begin
  -  Result := false;
  -  if not FileExists(Poppler_pdftotext_ExePath) then
  -  begin
  -    FLastError := SPoppler_pdftotext_error_unable_to_run + Poppler_pdftotext_ExePath;
  -    exit;
  -  end;
  -  Result := true;
  +  Result := CheckCLU(Poppler_pdftotext_ExePath);
   end;
   
   class function TPopplerToolbox.SplitPdfInPages(const aPdfFileName, aPagesFolder, aFileNameTemplate: string): boolean;
   var
  -  outputString, cmd : string;
  +  outputString : string;
     thumbFileTemplate : String;
  +  {$IFNDEF UNIX}
  +  cmd : String;
  +  {$ENDIF}
   begin
     Result := false;
     if not CheckPoppler_pdfseparate_ExePath then
  
positive.code:   sysutils, Classes;
  
  resourcestring
    SPoppler_error_file_missing = 'Pdf file is missing: ';
    SPoppler_pdfunite_error_unable_to_run = 'Unable to run Poppler pdfunite: ';
    SPoppler_pdfseparate_error_unable_to_run = 'Unable to run Poppler pdfseparate: ';
  
negative.code:   end;
  
    tempFile := IncludeTrailingPathDelimiter(GetTempDir) + mUtility.GenerateRandomIdString + '.txt';
    {$IFDEF UNIX}
    if RunCommandIndir(ExtractFileDir(aPdfFileName), Poppler_pdftotext_ExePath, [aPdfFileName, tempFile], outputString,  [poStderrToOutPut, poUsePipes, poWaitOnExit]) then
    {$ELSE}
    cmd := AnsiQuotedStr(UTF8ToWinCP(aPdfFileName),'"') + ' ' + AnsiQuotedStr(UTF8ToWinCP(tempFile),'"');
    if RunCommand(Poppler_pdftotext_ExePath, [cmd], outputString, [poNoConsole, poWaitOnExit]) then
    {$ENDIF}
    begin
      list := TStringList.Create;
      try
  