Changes

Jump to navigation Jump to search
no edit summary
...ok,it's not correct (why?), but it looks funny :)
 
 
== Ghostscript ==
There are essentially 2 kind of use of ghostscript
* convert an existing eps / ps file in pdf
* use a program in postscript that make something e.g. a barcode /label generator
 
<pre>
import ctypes
import sys
 
 
class gs(object):
 
def __init__(self):
 
self.ierrors = dict()
self.ierrors['e_unknownerror'] = -1
self.ierrors['e_dictfull'] = -2
self.ierrors['e_dictstackoverflow'] = -3
self.ierrors['e_dictstackunderflow'] = -4
self.ierrors['e_execstackoverflow'] = -5
self.ierrors['e_interrupt'] = -6
self.ierrors['e_invalidaccess'] = -7
self.ierrors['e_invalidexit'] = -8
self.ierrors['e_invalidfileaccess'] = -9
self.ierrors['e_invalidfont'] = -10
self.ierrors['e_invalidrestore'] = -11
self.ierrors['e_ioerror'] = -12
self.ierrors['e_limitcheck'] = -13
self.ierrors['e_nocurrentpoint'] = -14
self.ierrors['e_rangecheck'] = -15
self.ierrors['e_stackoverflow'] = -16
self.ierrors['e_stackunderflow'] = -17
self.ierrors['e_syntaxerror'] = -18
self.ierrors['e_timeout'] = -19
self.ierrors['e_typecheck'] = -20
self.ierrors['e_undefined'] = -21
self.ierrors['e_undefinedfilename'] = -22
self.ierrors['e_undefinedresult'] = -23
self.ierrors['e_unmatchedmark'] = -24
self.ierrors['e_VMerror'] = -25
self.ierrors['e_configurationerror'] = -26
self.ierrors['e_undefinedresource'] = -27
self.ierrors['e_unregistered'] = -28
self.ierrors['e_invalidcontext'] = -29
self.ierrors['e_invalidid'] = -30
self.ierrors['e_Fatal'] = -100
self.ierrors['e_Quit'] = -101
self.ierrors['e_InterpreterExit'] = -102
self.ierrors['e_RemapColor'] = -103
self.ierrors['e_ExecStackUnderflow'] = -104
self.ierrors['e_VMreclaim'] = -105
self.ierrors['e_NeedInput'] = -106
self.ierrors['e_Info'] = -110
 
self.libgspath = '/opt/luatex/luatex-lunatic/lib/libgs.so'
 
self.OutFile = ''
self.InFile = ''
 
self.args = []
 
def appendargs(self,arg):
if arg.find('-sOutputFile')>= 0: return
if arg.find('-c quit')>= 0: return
self.args.append(arg)
 
 
def run(self):
libgs = ctypes.CDLL(self.libgspath)
 
exit_status = ctypes.c_int()
code = ctypes.c_int(1)
code1 = ctypes.c_int()
instance = ctypes.c_void_p(None)
exit_code = ctypes.c_int()
 
 
code.value = libgs.gsapi_new_instance(ctypes.byref(instance), None)
if code.value == 0 :
libgs.gsapi_set_stdio(instance, None, None, None)
self.args.insert(0,'')
self.args.append('-sOutputFile=%s' %self.OutFile)
self.args.append(self.InFile)
self.args.append('-c quit')
arguments = self.args
#
argc = ctypes.c_int(len(arguments))
argv = (ctypes.c_char_p * argc.value)(*arguments)
code.value = libgs.gsapi_init_with_args(instance, argc, argv)
 
code1.value = libgs.gsapi_exit(instance)
 
if code.value == 0 or code.value == self.ierrors['e_Quit']:
code.value = code1.value
 
if code.value == self.ierrors['e_Quit']:
code.value = 0
 
libgs.gsapi_delete_instance(instance)
 
exit_status.value = 0
 
if __name__ == '__main__':
pyctyps = gs()
pyctyps.appendargs('-q')
pyctyps.appendargs('-dNOPAUSE')
pyctyps.appendargs('-dEPSCrop')
pyctyps.appendargs('-sDEVICE=pdfwrite')
pyctyps.InFile = 'test.eps'
pyctyps.OutFile = 'test.pdf'
pyctyps.run()
 
</pre>

Navigation menu