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
          Administrator

            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
              Administrator

                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
                  Administrator

                    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.