1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
#!/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)
|