For the PyCon registration web page, we would like to display a preview of what the persons badge will look like based on what they have entered. (full name, nick name, extra lines in the fonts that will be used - helps make sure things will fit, etc.)
The badge gets created as a pdf=mkpdf(data set) - we can just give the person the pdf, but we are trying to put it on the web page with <img src..> so we need to convert the pdf to an image. I can't find a clean way of doing it. I found no ghostscript bindings, and the 2 imagemagick bindings either screwed up stdio or segfaulted. The best I could do is below, and it is causing this to show up in the error log: close failed: [Errno 10] No child processes and stack dumps: > subprocess.call(gs_command) > > File "/usr/local/lib/python2.5/subprocess.py", line 443, in call > return Popen(*popenargs, **kwargs).wait() > > File "/usr/local/lib/python2.5/subprocess.py", line 1110, in wait > pid, sts = os.waitpid(self.pid, 0) > > OSError: [Errno 10] No child processes here is the current code: def sample(pdf): tempDir = tempfile.mkdtemp( prefix = "badgePreview_" ) pdfname = path.join( tempDir, 'badge.pdf' ) imgname = path.join( tempDir, 'badge.png' ) open(pdfname,'wb').write(pdf) # convert pdf to some image format (uses ext to determine type) # system('convert %s %s' % (pdfname, imgname)) # gs -sDEVICE=png16m -sOutputFile=x.png -dBATCH -dNOPAUSE badge.pdf gs_command = ['gs', '-q', '-sDEVICE=png16m', '-dBATCH', '-dNOPAUSE', '-sOutputFile=%s'%imgname, pdfname ] subprocess.call(gs_command) # crop the badge (pdf may be 8x11 page) # and write to a string that can be reutnred buffer = StringIO() Image.open(imgname).crop([0,0,300,235]).save(buffer, 'png') img = buffer.getvalue() # clean up buffer.close() remove(pdfname) remove(imgname) rmdir(tempDir) return img So.... anyone have some nifty code? Carl K _______________________________________________ Image-SIG maillist - Image-SIG@python.org http://mail.python.org/mailman/listinfo/image-sig