This is the Python script.
----------- import sys import re import struct import glob import os # This is a very simple script to make a PDF file out of the output of a # multipage symbol compression. # Run ./jbig2 -s <other options> image1.jpeg image1.jpeg ... # python pdf.py > out.pdf class Ref: def __init__(self, x): self.x = x def __str__(self): return "%d 0 R" % self.x class Dict: def __init__(self, values = {}): self.d = {} self.d.update(values) def __str__(self): s = ['<< '] for (x, y) in self.d.items(): s.append('/%s ' % x) s.append(str(y)) s.append("\n") s.append(">>\n") return ''.join(s) global_next_id = 1 class Obj: next_id = 1 def __init__(self, d = {}, stream = None): global global_next_id if stream is not None: d['Length'] = str(len(stream)) self.d = Dict(d) self.stream = stream self.id = global_next_id global_next_id += 1 def __str__(self): s = [] s.append(str(self.d)) if self.stream is not None: s.append('stream\n') s.append(self.stream) s.append('\nendstream\n') s.append('endobj\n') return ''.join(s) class Doc: def __init__(self): self.objs = [] self.pages = [] def add_object(self, o): self.objs.append(o) return o def add_page(self, o): self.pages.append(o) return self.add_object(o) def __str__(self): a = [] j = [0] offsets = [] def add(x): a.append(x) j[0] += len(x) + 1 add('%PDF-1.4') for o in self.objs: offsets.append(j[0]) add('%d 0 obj' % o.id) add(str(o)) xrefstart = j[0] a.append('xref') a.append('0 %d' % (len(offsets) + 1)) a.append('0000000000 65535 f ') for o in offsets: a.append('%010d 00000 n ' % o) a.append('') a.append('trailer') a.append('<< /Size %d\n/Root 1 0 R >>' % (len(offsets) + 1)) a.append('startxref') a.append(str(xrefstart)) a.append('%%EOF') # sys.stderr.write(str(offsets) + "\n") return '\n'.join(a) def ref(x): return '%d 0 R' % x def main(symboltable='symboltable', pagefiles=glob.glob('page-*')): doc = Doc() doc.add_object(Obj({'Type' : '/Catalog', 'Outlines' : ref(2), 'Pages' : ref(3)})) doc.add_object(Obj({'Type' : '/Outlines', 'Count': '0'})) pages = Obj({'Type' : '/Pages'}) doc.add_object(pages) symd = doc.add_object(Obj({}, file(symboltable, 'r').read())) page_objs = [] for p in pagefiles: try: contents = file(p).read() except IOError: sys.stderr.write("error reading page file %s\n"% p) continue (width, height) = struct.unpack('>II', contents[11:19]) xobj = Obj({'Type': '/XObject', 'Subtype': '/Image', 'Width': str(width), 'Height': str(height), 'ColorSpace': '/DeviceGray', 'BitsPerComponent': '1', 'Filter': '/JBIG2Decode', 'DecodeParms': ' << /JBIG2Globals %d 0 R >>' % symd.id}, contents) contents = Obj({}, 'q %d 0 0 %d 0 0 cm /Im1 Do Q' % (width, height)) resources = Obj({'ProcSet': '[/PDF /ImageB]', 'XObject': '<< /Im1 %d 0 R >>' % xobj.id}) page = Obj({'Type': '/Page', 'Parent': '3 0 R', 'MediaBox': '[ 0 0 %d %d ]' % (width, height), 'Contents': ref(contents.id), 'Resources': ref(resources.id)}) [doc.add_object(x) for x in [xobj, contents, resources, page]] page_objs.append(page) pages.d.d['Count'] = str(len(page_objs)) pages.d.d['Kids'] = '[' + ' '.join([ref(x.id) for x in page_objs]) + ']' print str(doc) def usage(script, msg): if msg: sys.stderr.write("%s: %s\n"% (script, msg)) sys.stderr.write("Usage: %s [file_basename] > out.pdf\n"% script) sys.exit(1) if __name__ == '__main__': if len(sys.argv) == 2: sym = sys.argv[1] + '.sym' pages = glob.glob(sys.argv[1] + '.[0-9]*') elif len(sys.argv) == 1: sym = 'symboltable' pages = glob.glob('page-*') else: usage(sys.argv[0]) if not os.path.exists(sym): usage("symbol table %s not found!"% sym) elif len(pages) == 0: usage("no pages found!") main(sym, pages) Paulo Soares wrote: > > Show us the Python script and I'll tell you something about it. > > Paulo > >> -----Original Message----- >> From: [EMAIL PROTECTED] >> [mailto:[EMAIL PROTECTED] On >> Behalf Of beppecosta >> Sent: Friday, January 19, 2007 10:27 AM >> To: itext-questions@lists.sourceforge.net >> Subject: [iText-questions] tiff2pdf with jbig2 >> >> >> At present on our iSeries(as400) we use iText/tiff2pdf to >> create pdf from >> scanned tiff documents. We produce thousands of documents per >> day and this >> works perfecty. However because these pdf's should be >> archived on optical >> disks and kept for one year (and because optical media cost a >> lot) we are >> intereted in reducing the final size of the document. >> We have been able to port leptionlib and jbig2 on our system >> and now we can >> get a "output.0000" and "output.sym" from a tiff image that >> is 35 to 60 % >> less that a tiff g4 image. Python script can generate a pdf >> from it, but we >> would prefer a java solution. Is there a way to implement >> iText to include >> this jbig2 compressed image instead of tiff ? >> Thanks. >> Giuseppe. >> -- >> View this message in context: >> http://www.nabble.com/tiff2pdf-with-jbig2-tf3039185.html#a8446859 >> Sent from the iText - General mailing list archive at Nabble.com. >> >> >> -------------------------------------------------------------- >> ----------- >> Take Surveys. Earn Cash. Influence the Future of IT >> Join SourceForge.net's Techsay panel and you'll get the >> chance to share your >> opinions on IT & business topics through brief surveys - and earn cash >> http://www.techsay.com/default.php?page=join.php&p=sourceforge >> &CID=DEVDEV >> _______________________________________________ >> iText-questions mailing list >> iText-questions@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/itext-questions >> Buy the iText book: http://itext.ugent.be/itext-in-action/ >> > > > Aviso Legal: > Esta mensagem é destinada exclusivamente ao destinatário. Pode conter > informação confidencial ou legalmente protegida. A incorrecta transmissão > desta mensagem não significa a perca de confidencialidade. Se esta > mensagem for recebida por engano, por favor envie-a de volta para o > remetente e apague-a do seu sistema de imediato. É proibido a qualquer > pessoa que não o destinatário de usar, revelar ou distribuir qualquer > parte desta mensagem. > > Disclaimer: > This message is destined exclusively to the intended receiver. It may > contain confidential or legally protected information. The incorrect > transmission of this message does not mean the loss of its > confidentiality. If this message is received by mistake, please send it > back to the sender and delete it from your system immediately. It is > forbidden to any person who is not the intended receiver to use, > distribute or copy any part of this message. > > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share > your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > iText-questions mailing list > iText-questions@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/itext-questions > Buy the iText book: http://itext.ugent.be/itext-in-action/ > > http://www.nabble.com/file/5716/pdf.py pdf.py http://www.nabble.com/file/5716/pdf.py pdf.py -- View this message in context: http://www.nabble.com/tiff2pdf-with-jbig2-tf3039185.html#a8447190 Sent from the iText - General mailing list archive at Nabble.com. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ iText-questions mailing list iText-questions@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://itext.ugent.be/itext-in-action/