shell() geht nicht wie erwartet

Startseite Foren Deutsches LiveCode-Forum shell() geht nicht wie erwartet

Schlagwörter: 

Ansicht von 6 Antwort-Themen
  • Autor
    Beiträge
    • #18170
      Rischart
      Teilnehmer

      Guten Tag,

      ich möchte per LiveCode auf einem Mac den Text aus einem .pdf als .txt extrahieren.

      Dazu habe ich die xpdf-tools-mac-4.02 installiert und kann nun im Terminal mit z.B.
      „pdftotext /Users/hillen/Desktop/inter.pdf"
      ein inter.txt auf dem Desktop entstehen lassen. Wunderbar!

      Danach hab ich das in LiveCode versucht und geschrieben:

       put "/users/hillen/Desktop/inter.pdf" into fn
       put "pdftotext " & fn into Kommando
         
      if there is not a file fn then
         answer "File nicht vorhanden!"
          exit to top
      end if
      	
      get shell(quote & Kommando & quote)
      answer it & return & return & the result

      Die Konvertierung geht nicht und die Antwort lautet:

      /bin/sh: line 1: pdftotext /users ......pdf: No such file or directory

      und das Result ist 127.

      Ich weiß nun nicht weiter. Kann jemand hier helfen?

      Vielen Dank,
      Richard.

    • #18172
      Rischart
      Teilnehmer

      zur Ergänzung:

      Im Terminal liefert der Aufruf von pdftotext ohne Argument einen Überblick der Kommandooptionen, in livecode liefert get shell("pdftotext") als Answer "command not found".

      Richard.

    • #18173
      Klaus Major
      Verwalter

      Hallo Ricschart,

      willkommen im Forum!

      Ich bin kein SHELL Experte, aber versuche es mal ohne QUOTE:

      ...
      get shell(Kommando)
      ...

      Gruß

      Klaus

    • #18178
      Rischart
      Teilnehmer

      Hallo Klaus,

      Danke für den Vorschlag.

      Das ergibt dann "Command not found".

      Noch eine Beobachtung dazu:

      Mit shell() per Livecode funktionieren Kommandos wie ls und liefern das erwartete Ergebnis wie im Terminal.

      Der einfach Aufruf get shell("pdftotext") sollte die Man-Seite liefern; geht aber nur im Terminal und liefert in Livecode "command not found"

      Grüße von Richard.

    • #18179
      Klaus Major
      Verwalter

      Hi Richard,

      man muss, soweit ich weiß, der SHELL den Pfad zur neuen EXECUTABLE irgendwie noch mitteilen, wenn Sie verstehen, was ich meine. 🙂

      Aber wie das zu bewerkstelligen ist, kann ich leider nicht sagen.

      Gruß

      Klaus

    • #18187
      Rischart
      Teilnehmer

      Hallo Klaus,
      Deine Erinnerung war richtig. Ich habe mein anfängliches Script modifiziert und es läuft! Danke!

      put "/users/hillen/Desktop/inter.pdf" into fn
       put "/usr/local/bin/pdftotext " & fn into Kommando
         
      if there is not a file fn then
         answer "File nicht vorhanden!"
          exit to top
      end if
      	
      get shell(quote & Kommando & quote)
      answer it & return & return & the result
    • #18192
      Klaus Major
      Verwalter

      Ja, der absolute Pfad sollte natürlich auch funktionieren.
      Aber ich meinte das, was Hermann (-hh) vor einem Moment auf der Mailingliste gepostet hatte:

      ##You could add on startup /usr/local/bin
      ##to the LC environment variable $PATH:
      
      on startUp
       local ulb="/usr/local/bin"
       set itemdel to ":"
       if ulb is not among the items of $PATH
       then put ":"&ulb after $PATH
      end startUp
Ansicht von 6 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.