2014-01-24 58 views
0

出於某種原因,當我嘗試從Matlab(pdftk *.pdf cat output combFile.pdf)調用PDFtk時,出現/bin/bash: pdftk: command not found錯誤,但我可以在同一目錄中的終端中運行相同的命令問題。我重新啓動了我的系統,但這似乎沒有幫助。我正在運行Mac OSX 10.9.1Matlab 2013b。我不想使用PDFtk的絕對路徑,因爲它需要跨平臺兼容。無法從Matlab中調用PDFtk,但可以從終端

編輯:這可能會有所幫助。當我在Matlab中回顯$ PATH時,我得到/usr/bin:/bin:/usr/sbin:/sbin。當我在碼頭做的時候,我得到了/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin。然後我做了which pdftk並且它返回了/usr/local/bin/pdftk有沒有辦法給Matlab添加/usr/local/bin/的路徑?

+0

你可以發佈你用來從Matlab調用PDFtk的代碼嗎? – phyrox

+0

當然,它是'system('pdftk myfig [0-9] [0-9] .pdf cat output myfigCombined.pdf');' – USCFan13

回答

0

看來你的$ PATH環境變量沒有導出到Matlab。閱讀 http://www.mathworks.com/matlabcentral/newsreader/view_thread/255609 我建議增加一個

export PATH=$PATH:<Path-to-your-PDFtk-binary> 

在你的.bash_profile

+0

它應該根據鏈接放在'MATLAB/bin/matlab'中。很明顯,它是從bash啓動文件中加載的(除非它是別名或奇怪的東西),因爲他從shell執行它。 – BroSlow

+0

我認爲這可能會起作用,但是這個腳本需要運行在至少4臺不受我控制的計算機上(Mac和Linux)。我也想過指定完整路徑,但Mac(/ usr/local/bin)和Linux(/ usr/bin)不同。 – USCFan13

1

我認爲,出口PATH想法很可能是一個單一的系統更好(注:我沒有測試過) ,但我需要我的腳本才能用在幾臺不受我控制的Mac和Linux機器上。這是我最後使用(是的,我知道,這將打破在Windows上,但是這是確定)

if(ismac) 
    system('/usr/local/bin/pdftk myfig[0-9][0-9].pdf cat output myfigCombined.pdf'); 
else 
    system('/usr/bin/pdftk myfig[0-9][0-9].pdf cat output myfigCombined.pdf'); 
end 

本來,我是用if(isunix)第二個命令,但可能是因爲Mac的UNIX架構的兩命令正在執行中。

編輯:我能夠在Linux上測試它,它的工作完美。我想這將是Windows的語法,但我無法訪問安裝了PDFtk和Matlab的Windows機器,所以沒有保證(另外,我不確定我是否執行了路徑引號......):

elseif (ispc) 
    system('"C:\Program Files (x86)\PDFtk Server\bin\pdftk" myfig[0-9][0-9].pdf cat output myfigCombined.pdf');