Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   PDFtoText auf Mac ausführen (https://www.delphipraxis.net/206782-pdftotext-auf-mac-ausfuehren.html)

Stewag 28. Jan 2021 18:31

PDFtoText auf Mac ausführen
 
Ich versuche seit Tagen, die 64Bit Mac-Version von pdftotext auf einem Mac als command line laufen zu lassen.

Der Code dazu sollte ja eigentlich so sein:
Code:
{$IFDEF MACOS}
_system(PAnsiChar('open '+'"'+AnsiString(FilePath)+'"'));
{$ENDIF MACOS}
Aber egal welche Variationen ich probiere, es klappt nicht.
Hier ein paar meiner Versuche:

Code:
function TForm1.GetPDFtoText(Datei: string): boolean;
var
  success: boolean;
begin
  success := false;

{$IFDEF MACOS}
  if FileExists('/Applications/[Appname]/pdftotext') then
  begin
    {... bis hierher komme ich. Ich habe festgestellt, das den exakten Pfad den
     IncludeTrailingPathDelimiter(Extractfiledir(Paramstr(0))) + 'pdftotext' zurück gibt auf einem Mac offenbar nicht
     verarbeitet wird.}
   
    try
      _system(PAnsiChar('open "' + AnsiString('/Applications/[Appname]/pdftotext ' + Datei + '"')));
      _system(PAnsiChar('open ' + AnsiString('/Applications/[Appname]/pdftotext ' + Datei)));
     
      _system(PAnsiChar(AnsiString('open "/Applications/[Appname]/pdftotext ' + Datei+'"')));
      _system(PAnsiChar(AnsiString('open /Applications/[Appname]/pdftotext ' + Datei)));

      _system(PAnsiChar('open -a"' + AnsiString('/Applications/[Appname]/pdftotext ' + Datei + '"')));
      _system(PAnsiChar('open -a' + AnsiString('/Applications/[Appname]/pdftotext ' + Datei)));
     
      _system(PAnsiChar('$ open "' + AnsiString('/Applications/[Appname]/pdftotext ' + Datei + '"')));
      _system(PAnsiChar('$ open ' + AnsiString('/Applications/[Appname]/pdftotext ' + Datei)));
     
      ... usw, usw. Habe es auch ohne AnsiString() versucht. Die "-a" und "$" open Parameter habe ich in beim googeln
      gefunden.

success := true;
    except
    end;
  end
{$ENDIF MACOS}
  else
    showmessage('PdfToText im Programmverzeichnis nicht gefunden!');

  Result := success
end;

Hat jemand eine zündende Idee oder es selber schon mal gemacht?

himitsu 28. Jan 2021 22:14

AW: PDFtoText auf Mac ausführen
 
Wenn AnsiString(), dann um alles, also PAnsiChar(AnsiString(...)), sonst macht das alles eh keinen Sinn.

Gibt es denn kein _system mit PChar/PWideChar?


Sicher, dass OPEN überhaupt der richtige Befehlt ist?
https://scriptingosx.com/2017/02/the...-open-command/
Sieht für mich fast so aus, als wenn Open ohne -a alles öffnet, also dein "Programm" womöglich nicht ausführt, sondern versuht es als Pfad zu öffnen.

Bzw., kann man bei -a den kompletten Programm-Pfad angeben, oder nur so eine "Kurz"-Kennung?

Aber per se scheint es ohne -a oder -b nicht zu gehn, jedenfalls nicht beim OPEN.
https://osxdaily.com/2007/02/01/how-...-the-terminal/

PS: Warum erst weg mit dem Trenner und dann wieder rein?
IncludeTrailingPathDelimiter(ExtractFileDir(Paramstr(0))) = ExtractFilePath(Paramstr(0))

Stewag 31. Jan 2021 06:56

AW: PDFtoText auf Mac ausführen
 
Arigato Himitsu!
da es mir aber auch mit Deinen Hinweisen nicht gelungen ist, habe ich mich für den Einsatz einer Komponente entschieden.
Vielleicht hast du Recht damit, dass der open Befehl nur öffnen und nicht ausführen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz