仅当从emacs调用时才会出现Imagemagick(转换)错误

时间:2016-01-20 05:39:00

标签: macos emacs imagemagick elisp

我正在尝试使用ImageMagick的(call-process "convert" nil "test" t "/path/to/test.pdf" "/path/to/test.png") 工具将PDF格式转换为来自Emacs的png。我使用以下elisp命令:

convert: no images defined `/path/to/test.png' @ error/convert.c/ConvertImageCommand/3241.

给出了结果

$ convert test.pdf test.png

但是,如果我跑

convert
从命令终端

一切正常,我得到了正确的png文件。

以下是我的尝试:

  • 我确认exec-path的路径位于Emacs gs变量中
  • 我尝试使用干净的.emacs
  • 启动Emacs
  • 我还检查了Ghostscript的call-process是否可用(来自终端和convert,因为这似乎在我在网上看到的其他地方引起类似的问题

我在Mac OSX(Yosemite)上使用Emacs 24.5,在Homebrew上安装了ImageMagick 6.9.2-10,在homebrew上安装了Ghostscript 9.07。

任何帮助将不胜感激。顺便说一句,从Emacs使用call-process的动机是我可以从org-mode / org-babel(使用几乎相同的{{1}}命令)导出Latex(tikz)图块,所以我真的需要让这个工作"按原样#34;而不是一个解决方案。谢谢!

1 个答案:

答案 0 :(得分:0)

我通常会使用emacs命令shell-commando(M-!)或M-x shell-command,然后将/path/to/pdf.pdf /path/to/pdf.png转换。通常,它应该与现有目录更好地配合 或者,如果您想使用emacs lisp,则可以在缓冲区内使用emacs打开目录,然后在该缓冲区上执行ielm。

对于执行此命令,我还建议您使用功能shell-command。这是ielm和消息中的输出:

ELISP> (shell-command "ls")
0 (#o0, #x0, ?\C-@)
ELISP> (shell-command "ls")
0 (#o0, #x0, ?\C-@)
ELISP> (shell-command "convert pdf.pdf pdf.png")
0 (#o0, #x0, ?\C-@)
ELISP> (shell-command "ls")
0 (#o0, #x0, ?\C-@)
ELISP> (shell-command "pwd")
0 (#o0, #x0, ?\C-@)

enter image description here

如果tuou要使用调用处理,则正确的语法将是:

ELISP> (call-process "convert" nil t nil "pdf.pdf" "pdf.png")