Llamando al comando de terminal (pdfcrop) ya sea directamente desde Python o desde AppleScript (haga un script de shell)

0

en OSX, estoy usando applecript para obtener una cadena de látex de una aplicación (OmniOutliner), procesarla a través de un script de python que llama a pdflatex y pdfcrop , y pegar el pdf recortado final nuevamente en OmniOutliner. Consulte los detalles en github .

Desde que actualicé a OS 10.11 El Capitan y TexLive-2016 me he encontrado con un problema extraño:

  • applescript llama al script de python que llama a pdflatex , que todo funciona bien, después de que cambié las rutas apuntando a pdflatex .
  • ahora, cuando ejecuto pdfcrop desde

    • ya sea dentro de la secuencia de comandos de python dentro de applecript

      set com to {"source ~/.bash_profile; cd " & presentDirStr & "; python create_latex_pdf.py " & strNoteQ}
      do shell script com
      
    • o directamente desde AppleScript: '

      set com_pdfcrop to {"source ~/.bash_profile; cd " & presentDirStr & ";/usr/local/texlive/2016/texmf-dist/scripts/pdfcrop temp.pdf"}
      do shell script com_pdfcrop
      

      Recibo el error error "sh: /usr/local/texlive/2016/texmf-dist/scripts/pdfcrop: is a directory" number 126

  • sin embargo, cuando llamo a mi script de Python directamente desde el terminal (no desde AppleScript), produce la multa del pdf recortada

         os.chdir(cur_path)
         cmd_pdflatex = '/Library/TeX/texbin/pdflatex temp.tex'
         if talk_to_me is True:
             print "command for executing pdflatex:\n    ", cmd_pdflatex
         os.system(cmd_pdflatex)
    

Ahora,

  • ¿el comando do shell script es la mejor forma en este caso de llamar a un script de python desde AppleScript?
  • ¿Cuáles podrían ser algunas de las razones de este comportamiento?
  • ¿Qué implica el error número 126 "no es un directorio" (implícito en Google, pero desafortunadamente, desafortunadamente)?
  • ¿Qué error podría ocurrir entre llamar a pdfcrop desde un script de python a través de os.system(...) o desde un applecript que llame exactamente a ese mismo script de python a través de do shell script ... ?

actualización 20160616 12:32

a) como señaló Mark, esto es un poco confuso, así que simplifiqué esto en un applecript: b) de alguna manera me confundí con los enlaces y directorios reales donde TexLive almacena cosas; así que actualicé para llamar a pdfcrop desde lo que supongo que es el directorio actual en cualquier momento

tell application "Finder" to get folder of (path to me) as Unicode text
set presentDir to POSIX path of result
set presentDirStr to result
set com_pdfcrop to {"cd " & presentDirStr & ";/usr/local/texlive/2016/bin/x86_64-darwin/pdfcrop temp.pdf"}
do shell script com_pdfcrop

Ahora obtengo de este applecript error "!!! Error: Ghostscript exited with error code 127!" number 127

actualización 20160616 13:16

funciona ahora, aquí hay algunos pensamientos:

  • mi ~/.bash_profile ha agregado /usr/texbin/: a la ruta. Estoy seguro de que esto fue necesario para algo en algún momento.
  • Actualmente, lo saqué, pero eso llevó al problema de que pdfcrop.pl ubicado en /usr/local/texlive/2016/texmf-dist/scripts/pdfcrop no pudo encontrar pdftex . Originalmente, la línea 352 contenía $::opt_pdftexcmd = "pdftex"; , que cambié a $::opt_pdftexcmd = "/Library/TeX/texbin/pdftex";

Esto significa que funciona ahora, pero probablemente me meto en este lío de nuevo, cuando decido actualizar TexLive, probablemente en 2017.

    
pregunta Claus 16.06.2016 - 09:28

0 respuestas

Lea otras preguntas en las etiquetas