#!/usr/bin/env texlua --*-Lua-*- -- $Id: $ -- Copyright (C) 2008 Reinhard Kotucha. -- You may freely use, modify and/or distribute this file. -- Replacement for ps2pdf*.bat. -- Convert PS to PDF function fixwin (args_unix) if os.type == 'windows' then local args_win={} -- new table args_win[0]=args_unix[1] for i=1, #args_unix do args_win[i]='"'..args_unix[i]..'"' end return args_win else return args_unix end end function filename (file) local filename if string.find(file, '/') then -- UNIX path filename=select(1, string.gsub(file, '.*/', '')) elseif string.find(file, '\\') then -- Windows path filename=select(1, string.gsub(file, '.*\\', '')) else -- no path filename=file end return(filename) end function basename (file) local basename local fname fname=filename (file) basename=select(1, string.gsub(fname, '\.%a+$', '')) return(basename) end kpse.set_program_name('ps2pdf.texlua', 'ps2pdf') TEXDIR=kpse.var_value('SELFAUTOPARENT') if os.type == 'windows' then os.setenv('GS_LIB', TEXDIR..'/tlpkg/tlgs/lib') os.setenv('PATH', TEXDIR..'/tlpkg/tlgs/bin;'..os.getenv('PATH')) gs='gswin32c' else gs='gs' end command={gs} files={} options={} PDF_level='1.4' if string.find(basename(arg[0]), '12') then PDF_level='1.2' elseif string.find(basename(arg[0]), '13') then PDF_level='1.3' elseif string.find(basename(arg[0]), '14') then PDF_level='1.4' end options[#options+1]='-dCompatibilityLevel='..PDF_level for i=1, #arg do if string.find(arg[i], '^-$') then files[#files+1]=arg[i] elseif string.find(arg[i], '^-') then options[#options+1]=arg[i] else files[#files+1]=arg[i] end end if #files == 1 then if string.find(files[1], '^-$') then outfile='-' elseif string.find(filename(files[1]), '\.e*ps$') then outfile=basename(files[1])..'.pdf' else outfile=filename(files[1])..'.pdf' end else outfile=files[2] end for i=1, #options do command[#command+1]=options[i] end other_opts={'-q', '-dSAFER', '-dNOPAUSE', '-dBATCH', '-sDEVICE=pdfwrite'} for i=1, #other_opts do command[#command+1]=other_opts[i] end command[#command+1]='-sOutputFile="'..outfile..'"' for i=1, #options do command[#command+1]=options[i] end if #files < 1 or #files > 2 then io.stderr:write('Usage: ps2pdf [options] (input.[e]ps|-) [output.pdf]\n') os.exit(0) end other_opts={'-c', '.setpdfwrite', '-f', files[1]} for i=1, #other_opts do command[#command+1]=other_opts[i] end command=fixwin(command) --[[ prepend an additional hyphen to activate this code for i=0, #command do print (command[i]) end os.exit(ret) --]] ret=os.spawn(command) os.exit(ret)