From 499685ce4349fa92e5c5c79282db0471ccf361dc Mon Sep 17 00:00:00 2001 From: Reinhard Kotucha Date: Sun, 9 Mar 2008 04:30:45 +0000 Subject: Ghostscript wrappers for Windows. git-svn-id: svn://tug.org/texlive/trunk@6908 c570f23f-e606-0410-a88d-b1316a301751 --- Master/bin/win32/eps2eps.texlua | 64 +++++++++++++++++++ Master/bin/win32/pdf2dsc.texlua | 62 ++++++++++++++++++ Master/bin/win32/pdfopt.texlua | 70 +++++++++++++++++++++ Master/bin/win32/ps2ascii.texlua | 80 ++++++++++++++++++++++++ Master/bin/win32/ps2pdf.texlua | 132 +++++++++++++++++++++++++++++++++++++++ Master/bin/win32/ps2pdf12.texlua | 132 +++++++++++++++++++++++++++++++++++++++ Master/bin/win32/ps2pdf13.texlua | 132 +++++++++++++++++++++++++++++++++++++++ Master/bin/win32/ps2pdf14.texlua | 132 +++++++++++++++++++++++++++++++++++++++ 8 files changed, 804 insertions(+) create mode 100755 Master/bin/win32/eps2eps.texlua create mode 100755 Master/bin/win32/pdf2dsc.texlua create mode 100755 Master/bin/win32/pdfopt.texlua create mode 100755 Master/bin/win32/ps2ascii.texlua create mode 100755 Master/bin/win32/ps2pdf.texlua create mode 100755 Master/bin/win32/ps2pdf12.texlua create mode 100755 Master/bin/win32/ps2pdf13.texlua create mode 100755 Master/bin/win32/ps2pdf14.texlua (limited to 'Master/bin') diff --git a/Master/bin/win32/eps2eps.texlua b/Master/bin/win32/eps2eps.texlua new file mode 100755 index 00000000000..2d39179917e --- /dev/null +++ b/Master/bin/win32/eps2eps.texlua @@ -0,0 +1,64 @@ +#!/usr/bin/env texlua +--*-Lua-*- +-- $Id: $ + +-- Copyright (C) 2008 Reinhard Kotucha. +-- You may freely use, modify and/or distribute this file. + +-- Replacement for eps2eps.bat. +-- 'Distill' Encapsulated PostScript. + +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 + +kpse.set_program_name('eps2eps.texlua', 'eps2eps') + +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, '-q', '-sDEVICE=epswrite', '-dNOPAUSE', + '-sOutputFile='..arg[#arg], '-dBATCH', '-dSAFER', + '-dDEVICEWIDTH=250000', '-dDEVICEHEIGHT=250000'} + +files=0 + +for i=1, #arg do + if not string.find(arg[i], '^-') then + files=files+1 + end + command[#command+1]=arg[i] +end + +if files < 2 then + io.stderr:write('Usage: eps2eps [options] input.eps output.eps') + os.exit(0) +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) diff --git a/Master/bin/win32/pdf2dsc.texlua b/Master/bin/win32/pdf2dsc.texlua new file mode 100755 index 00000000000..4cd6a729edf --- /dev/null +++ b/Master/bin/win32/pdf2dsc.texlua @@ -0,0 +1,62 @@ +#!/usr/bin/env texlua +--*-Lua-*- +-- $Id: $ + +-- Copyright (C) 2007 Reinhard Kotucha. +-- You may freely use, modify and/or distribute this file. + +-- Replacement for pdf2dsc.bat. +-- Convert PDF to DSC + +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 + +kpse.set_program_name('pdf2dsc.texlua', 'pdf2dsc') + +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 + +if #arg == 0 or #arg > 2 then + io.stderr:write('Usage: pdf2dsc input.pdf [output.dsc]\n') + os.exit(0) +end + +pdffile=arg[1] +if #arg==2 then + dscfile=arg[2] +else + dscfile=select(1, string.gsub(pdffile, '\.%a+$', '.dsc')) +end + +command={gs, '-q', '-dNODISPLAY', '-dSAFER', '-dDELAYSAFER', + '-sPDFname='..pdffile, '-sDSCname='..dscfile, 'pdf2dsc.ps', + '-c', 'quit'} + +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) diff --git a/Master/bin/win32/pdfopt.texlua b/Master/bin/win32/pdfopt.texlua new file mode 100755 index 00000000000..580a90ef4e8 --- /dev/null +++ b/Master/bin/win32/pdfopt.texlua @@ -0,0 +1,70 @@ +#!/usr/bin/env texlua +--*-Lua-*- +-- $Id: $ + +-- Copyright (C) 2008 Reinhard Kotucha. +-- You may freely use, modify and/or distribute this file. + +-- Replacement for pdfopt.bat. +-- Linearize 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 + +kpse.set_program_name('pdfopt.texlua', 'pdfopt') + +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, '-q', '-dNODISPLAY', '-dSAFER', '-dDELAYSAFER'} + +files={} + +for i=1, #arg do + if string.find(arg[i], '^-') then + command[#command+1]=arg[i] + else + files[#files+1]=arg[i] + end +end + +command[#command+1]='--' +command[#command+1]='pdfopt.ps' + +if #files ~= 2 then + io.stderr:write('Usage: pdfopt [options] input.pdf output.pdf') + os.exit(0) +else + for i=1, #files do + command[#command+1]=files[i] + end +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) diff --git a/Master/bin/win32/ps2ascii.texlua b/Master/bin/win32/ps2ascii.texlua new file mode 100755 index 00000000000..836d003ec96 --- /dev/null +++ b/Master/bin/win32/ps2ascii.texlua @@ -0,0 +1,80 @@ +#!/usr/bin/env texlua +--*-Lua-*- +-- $Id: $ + +-- Copyright (C) 2008 Reinhard Kotucha. +-- You may freely use, modify and/or distribute this file. + +-- Replacement for ps2ascii.bat. +-- Convert PostScript to ASCII + +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 remove_tmpfiles (tmpfiles) + for i=1, #tmpfiles do + if lfs.isfile(tmpfiles[i]) then + os.remove(tmpfiles[i]) + end + end +end + +kpse.set_program_name('ps2ascii.texlua', 'ps2ascii') + +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, '-q', '-dNODISPLAY', '-dBATCH', '-dSAFER', '-dDELAYBIND', + '-dWRITESYSTEMDICT', '-dSIMPLE', 'ps2ascii.ps', '-c', 'save', + '-f', 'ps2ascii.ps'} + +if #arg < 2 then + if #arg == 0 then + command[#command+1]='-' + elseif #arg == 1 then + command[#command+1]=arg[1] + end + command=fixwin(command) +elseif #arg == 2 then + -- We need a shell for I/O redirection. + command=gs..' -q -dNODISPLAY -dBATCH -dSAFER -dDELAYBIND'.. + '-dWRITESYSTEMDICT -dSIMPLE ps2ascii.ps -c save'.. + '-f ps2ascii.ps > "'..arg[2]..'"' +end + +--[[ prepend an additional hyphen to activate this code +if type(command) == 'string' then + print(command) +else + for i=0, #command do + print (command[i]) + end +end +os.exit(ret) +--]] + +if type(command) == 'string' then + ret=os.execute(command) +else + ret=os.spawn(command) +end + +remove_tmpfiles{'_temp_.err', '_temp_.out'} +os.exit(ret) diff --git a/Master/bin/win32/ps2pdf.texlua b/Master/bin/win32/ps2pdf.texlua new file mode 100755 index 00000000000..f18bd9e5d5e --- /dev/null +++ b/Master/bin/win32/ps2pdf.texlua @@ -0,0 +1,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) diff --git a/Master/bin/win32/ps2pdf12.texlua b/Master/bin/win32/ps2pdf12.texlua new file mode 100755 index 00000000000..f18bd9e5d5e --- /dev/null +++ b/Master/bin/win32/ps2pdf12.texlua @@ -0,0 +1,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) diff --git a/Master/bin/win32/ps2pdf13.texlua b/Master/bin/win32/ps2pdf13.texlua new file mode 100755 index 00000000000..f18bd9e5d5e --- /dev/null +++ b/Master/bin/win32/ps2pdf13.texlua @@ -0,0 +1,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) diff --git a/Master/bin/win32/ps2pdf14.texlua b/Master/bin/win32/ps2pdf14.texlua new file mode 100755 index 00000000000..f18bd9e5d5e --- /dev/null +++ b/Master/bin/win32/ps2pdf14.texlua @@ -0,0 +1,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) -- cgit v1.2.3