Re: [iText-questions] tiff2pdf with jbig2

2007-01-23 Thread beppecosta

Hi Paulo,

yesterday the unreadable pdf had this: 
2 0 obj /Filter/JBIG2Decode/Type/XObject/Length 21289/BitsPerComponent
1/Height 805306624

This morning I put the code into another system and now I get:
2 0 obj /Filter/JBIG2Decode/Type/XObject/Length 21289/BitsPerComponent
1/Height 1779

and Reader do OPEN it !! 

Again, I want to thank you for your assistance. 
Have a nice day.

Giuseppe.

 -Original Message-
 From: [EMAIL PROTECTED] 
 [mailto:[EMAIL PROTECTED] On 
 Behalf Of beppecosta
 Sent: Monday, January 22, 2007 4:56 PM
 To: itext-questions@lists.sourceforge.net
 Subject: Re: [iText-questions] tiff2pdf with jbig2
 
 
 Yes, I did set it.
 (I copied the code as is. I just put some try/catch and import.)
 Giuseppe.
 
 
 
 Paulo Soares wrote:
  
  Make sure that you set Document.compress = false before starting.
  
  Paulo
  
  -Original Message-
  From: [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED] On 
  Behalf Of beppecosta
  Sent: Monday, January 22, 2007 4:24 PM
  To: itext-questions@lists.sourceforge.net
  Subject: Re: [iText-questions] tiff2pdf with jbig2
  
  
  Paulo, 
  
  First of all thanks for your code. 
  
  Now I've tried wit a couple of jbig images but when I open 
  the document with
  Reader I get the error
  A drawing error occurred
  
  Giuseppe.
   
  
  Paulo Soares wrote:
   
   Here's the code:
   
   Document.compress = false;
   RandomAccessFile rf = new 
 RandomAccessFile(c:\\output., r);
   rf.seek(11);
   int width = rf.readInt();
   int height = rf.readInt();
   rf.seek(0);
   byte[] pg = new byte[(int)rf.length()];
   rf.readFully(pg);
   rf.close();
   rf = new RandomAccessFile(c:\\output.sym, r);
   byte[] sym = new byte[(int)rf.length()];
   rf.readFully(sym);
   rf.close();
   Document doc = new Document();
   PdfWriter writer = PdfWriter.getInstance(doc, new
   FileOutputStream(c:\\outjbig2.pdf));
   doc.open();
   Image img = new ImgRaw(width, height, 1, 1, pg);
   PdfDictionary dic = new PdfDictionary();
   dic.put(PdfName.FILTER, new PdfName(JBIG2Decode));
   PdfDictionary dp = new PdfDictionary();
   PdfStream str = new PdfStream(sym);
   PdfIndirectReference iref =
   writer.addToBody(str).getIndirectReference();
   dp.put(new PdfName(JBIG2Globals), iref);
   dic.put(PdfName.DECODEPARMS, dp);
   img.setAdditional(dic);
   img.scalePercent(10);
   doc.add(img);
   doc.close();
   
   I'll have to make a couple of changes in Image to get rid of
   Document.compress = false.
   
   Paulo 
   
   -Original Message-
   From: [EMAIL PROTECTED] 
   [mailto:[EMAIL PROTECTED] On 
   Behalf Of Paulo Soares
   Sent: Friday, January 19, 2007 11:40 AM
   To: Post all your questions about iText here
   Subject: Re: [iText-questions] tiff2pdf with jbig2
   
   Clever script. I'll need the jbig2 files and the resulting 
  PDF to do
   some tests. You can send it to me privately if you don't want 
   to post it
   to the world.
   
   Paulo
   
-Original Message-
From: [EMAIL PROTECTED] 
[mailto:[EMAIL PROTECTED] On 
Behalf Of beppecosta
Sent: Friday, January 19, 2007 10:58 AM
To: itext-questions@lists.sourceforge.net
Subject: Re: [iText-questions] tiff2pdf with jbig2


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

Re: [iText-questions] tiff2pdf with jbig2

2007-01-22 Thread beppecosta

Paulo, 

First of all thanks for your code. 

Now I've tried wit a couple of jbig images but when I open the document with
Reader I get the error
A drawing error occurred

Giuseppe.
 

Paulo Soares wrote:
 
 Here's the code:
 
 Document.compress = false;
 RandomAccessFile rf = new RandomAccessFile(c:\\output., r);
 rf.seek(11);
 int width = rf.readInt();
 int height = rf.readInt();
 rf.seek(0);
 byte[] pg = new byte[(int)rf.length()];
 rf.readFully(pg);
 rf.close();
 rf = new RandomAccessFile(c:\\output.sym, r);
 byte[] sym = new byte[(int)rf.length()];
 rf.readFully(sym);
 rf.close();
 Document doc = new Document();
 PdfWriter writer = PdfWriter.getInstance(doc, new
 FileOutputStream(c:\\outjbig2.pdf));
 doc.open();
 Image img = new ImgRaw(width, height, 1, 1, pg);
 PdfDictionary dic = new PdfDictionary();
 dic.put(PdfName.FILTER, new PdfName(JBIG2Decode));
 PdfDictionary dp = new PdfDictionary();
 PdfStream str = new PdfStream(sym);
 PdfIndirectReference iref =
 writer.addToBody(str).getIndirectReference();
 dp.put(new PdfName(JBIG2Globals), iref);
 dic.put(PdfName.DECODEPARMS, dp);
 img.setAdditional(dic);
 img.scalePercent(10);
 doc.add(img);
 doc.close();
 
 I'll have to make a couple of changes in Image to get rid of
 Document.compress = false.
 
 Paulo 
 
 -Original Message-
 From: [EMAIL PROTECTED] 
 [mailto:[EMAIL PROTECTED] On 
 Behalf Of Paulo Soares
 Sent: Friday, January 19, 2007 11:40 AM
 To: Post all your questions about iText here
 Subject: Re: [iText-questions] tiff2pdf with jbig2
 
 Clever script. I'll need the jbig2 files and the resulting PDF to do
 some tests. You can send it to me privately if you don't want 
 to post it
 to the world.
 
 Paulo
 
  -Original Message-
  From: [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED] On 
  Behalf Of beppecosta
  Sent: Friday, January 19, 2007 10:58 AM
  To: itext-questions@lists.sourceforge.net
  Subject: Re: [iText-questions] tiff2pdf with jbig2
  
  
  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('00 65535 f ')
  for o in offsets:
a.append('%010d 0 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

Re: [iText-questions] tiff2pdf with jbig2

2007-01-22 Thread Paulo Soares
Make sure that you set Document.compress = false before starting.

Paulo

 -Original Message-
 From: [EMAIL PROTECTED] 
 [mailto:[EMAIL PROTECTED] On 
 Behalf Of beppecosta
 Sent: Monday, January 22, 2007 4:24 PM
 To: itext-questions@lists.sourceforge.net
 Subject: Re: [iText-questions] tiff2pdf with jbig2
 
 
 Paulo, 
 
 First of all thanks for your code. 
 
 Now I've tried wit a couple of jbig images but when I open 
 the document with
 Reader I get the error
 A drawing error occurred
 
 Giuseppe.
  
 
 Paulo Soares wrote:
  
  Here's the code:
  
  Document.compress = false;
  RandomAccessFile rf = new RandomAccessFile(c:\\output., r);
  rf.seek(11);
  int width = rf.readInt();
  int height = rf.readInt();
  rf.seek(0);
  byte[] pg = new byte[(int)rf.length()];
  rf.readFully(pg);
  rf.close();
  rf = new RandomAccessFile(c:\\output.sym, r);
  byte[] sym = new byte[(int)rf.length()];
  rf.readFully(sym);
  rf.close();
  Document doc = new Document();
  PdfWriter writer = PdfWriter.getInstance(doc, new
  FileOutputStream(c:\\outjbig2.pdf));
  doc.open();
  Image img = new ImgRaw(width, height, 1, 1, pg);
  PdfDictionary dic = new PdfDictionary();
  dic.put(PdfName.FILTER, new PdfName(JBIG2Decode));
  PdfDictionary dp = new PdfDictionary();
  PdfStream str = new PdfStream(sym);
  PdfIndirectReference iref =
  writer.addToBody(str).getIndirectReference();
  dp.put(new PdfName(JBIG2Globals), iref);
  dic.put(PdfName.DECODEPARMS, dp);
  img.setAdditional(dic);
  img.scalePercent(10);
  doc.add(img);
  doc.close();
  
  I'll have to make a couple of changes in Image to get rid of
  Document.compress = false.
  
  Paulo 
  
  -Original Message-
  From: [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED] On 
  Behalf Of Paulo Soares
  Sent: Friday, January 19, 2007 11:40 AM
  To: Post all your questions about iText here
  Subject: Re: [iText-questions] tiff2pdf with jbig2
  
  Clever script. I'll need the jbig2 files and the resulting 
 PDF to do
  some tests. You can send it to me privately if you don't want 
  to post it
  to the world.
  
  Paulo
  
   -Original Message-
   From: [EMAIL PROTECTED] 
   [mailto:[EMAIL PROTECTED] On 
   Behalf Of beppecosta
   Sent: Friday, January 19, 2007 10:58 AM
   To: itext-questions@lists.sourceforge.net
   Subject: Re: [iText-questions] tiff2pdf with jbig2
   
   
   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('00 65535 f ')
   for o in offsets:
 a.append('%010d 0 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

Re: [iText-questions] tiff2pdf with jbig2

2007-01-22 Thread beppecosta

Yes, I did set it.
(I copied the code as is. I just put some try/catch and import.)
Giuseppe.



Paulo Soares wrote:
 
 Make sure that you set Document.compress = false before starting.
 
 Paulo
 
 -Original Message-
 From: [EMAIL PROTECTED] 
 [mailto:[EMAIL PROTECTED] On 
 Behalf Of beppecosta
 Sent: Monday, January 22, 2007 4:24 PM
 To: itext-questions@lists.sourceforge.net
 Subject: Re: [iText-questions] tiff2pdf with jbig2
 
 
 Paulo, 
 
 First of all thanks for your code. 
 
 Now I've tried wit a couple of jbig images but when I open 
 the document with
 Reader I get the error
 A drawing error occurred
 
 Giuseppe.
  
 
 Paulo Soares wrote:
  
  Here's the code:
  
  Document.compress = false;
  RandomAccessFile rf = new RandomAccessFile(c:\\output., r);
  rf.seek(11);
  int width = rf.readInt();
  int height = rf.readInt();
  rf.seek(0);
  byte[] pg = new byte[(int)rf.length()];
  rf.readFully(pg);
  rf.close();
  rf = new RandomAccessFile(c:\\output.sym, r);
  byte[] sym = new byte[(int)rf.length()];
  rf.readFully(sym);
  rf.close();
  Document doc = new Document();
  PdfWriter writer = PdfWriter.getInstance(doc, new
  FileOutputStream(c:\\outjbig2.pdf));
  doc.open();
  Image img = new ImgRaw(width, height, 1, 1, pg);
  PdfDictionary dic = new PdfDictionary();
  dic.put(PdfName.FILTER, new PdfName(JBIG2Decode));
  PdfDictionary dp = new PdfDictionary();
  PdfStream str = new PdfStream(sym);
  PdfIndirectReference iref =
  writer.addToBody(str).getIndirectReference();
  dp.put(new PdfName(JBIG2Globals), iref);
  dic.put(PdfName.DECODEPARMS, dp);
  img.setAdditional(dic);
  img.scalePercent(10);
  doc.add(img);
  doc.close();
  
  I'll have to make a couple of changes in Image to get rid of
  Document.compress = false.
  
  Paulo 
  
  -Original Message-
  From: [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED] On 
  Behalf Of Paulo Soares
  Sent: Friday, January 19, 2007 11:40 AM
  To: Post all your questions about iText here
  Subject: Re: [iText-questions] tiff2pdf with jbig2
  
  Clever script. I'll need the jbig2 files and the resulting 
 PDF to do
  some tests. You can send it to me privately if you don't want 
  to post it
  to the world.
  
  Paulo
  
   -Original Message-
   From: [EMAIL PROTECTED] 
   [mailto:[EMAIL PROTECTED] On 
   Behalf Of beppecosta
   Sent: Friday, January 19, 2007 10:58 AM
   To: itext-questions@lists.sourceforge.net
   Subject: Re: [iText-questions] tiff2pdf with jbig2
   
   
   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('00 65535 f ')
   for o in offsets:
 a.append('%010d 0 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

Re: [iText-questions] tiff2pdf with jbig2

2007-01-22 Thread Paulo Soares
Here's what I got.

Paulo 

 -Original Message-
 From: [EMAIL PROTECTED] 
 [mailto:[EMAIL PROTECTED] On 
 Behalf Of beppecosta
 Sent: Monday, January 22, 2007 4:56 PM
 To: itext-questions@lists.sourceforge.net
 Subject: Re: [iText-questions] tiff2pdf with jbig2
 
 
 Yes, I did set it.
 (I copied the code as is. I just put some try/catch and import.)
 Giuseppe.
 
 
 
 Paulo Soares wrote:
  
  Make sure that you set Document.compress = false before starting.
  
  Paulo
  
  -Original Message-
  From: [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED] On 
  Behalf Of beppecosta
  Sent: Monday, January 22, 2007 4:24 PM
  To: itext-questions@lists.sourceforge.net
  Subject: Re: [iText-questions] tiff2pdf with jbig2
  
  
  Paulo, 
  
  First of all thanks for your code. 
  
  Now I've tried wit a couple of jbig images but when I open 
  the document with
  Reader I get the error
  A drawing error occurred
  
  Giuseppe.
   
  
  Paulo Soares wrote:
   
   Here's the code:
   
   Document.compress = false;
   RandomAccessFile rf = new 
 RandomAccessFile(c:\\output., r);
   rf.seek(11);
   int width = rf.readInt();
   int height = rf.readInt();
   rf.seek(0);
   byte[] pg = new byte[(int)rf.length()];
   rf.readFully(pg);
   rf.close();
   rf = new RandomAccessFile(c:\\output.sym, r);
   byte[] sym = new byte[(int)rf.length()];
   rf.readFully(sym);
   rf.close();
   Document doc = new Document();
   PdfWriter writer = PdfWriter.getInstance(doc, new
   FileOutputStream(c:\\outjbig2.pdf));
   doc.open();
   Image img = new ImgRaw(width, height, 1, 1, pg);
   PdfDictionary dic = new PdfDictionary();
   dic.put(PdfName.FILTER, new PdfName(JBIG2Decode));
   PdfDictionary dp = new PdfDictionary();
   PdfStream str = new PdfStream(sym);
   PdfIndirectReference iref =
   writer.addToBody(str).getIndirectReference();
   dp.put(new PdfName(JBIG2Globals), iref);
   dic.put(PdfName.DECODEPARMS, dp);
   img.setAdditional(dic);
   img.scalePercent(10);
   doc.add(img);
   doc.close();
   
   I'll have to make a couple of changes in Image to get rid of
   Document.compress = false.
   
   Paulo 
   
   -Original Message-
   From: [EMAIL PROTECTED] 
   [mailto:[EMAIL PROTECTED] On 
   Behalf Of Paulo Soares
   Sent: Friday, January 19, 2007 11:40 AM
   To: Post all your questions about iText here
   Subject: Re: [iText-questions] tiff2pdf with jbig2
   
   Clever script. I'll need the jbig2 files and the resulting 
  PDF to do
   some tests. You can send it to me privately if you don't want 
   to post it
   to the world.
   
   Paulo
   
-Original Message-
From: [EMAIL PROTECTED] 
[mailto:[EMAIL PROTECTED] On 
Behalf Of beppecosta
Sent: Friday, January 19, 2007 10:58 AM
To: itext-questions@lists.sourceforge.net
Subject: Re: [iText-questions] tiff2pdf with jbig2


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('00 65535 f ')
for o in offsets

[iText-questions] tiff2pdf with jbig2

2007-01-19 Thread beppecosta

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. 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.phpp=sourceforgeCID=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/


Re: [iText-questions] tiff2pdf with jbig2

2007-01-19 Thread Paulo Soares
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. 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.phpp=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.phpp=sourceforgeCID=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/


Re: [iText-questions] tiff2pdf with jbig2

2007-01-19 Thread beppecosta

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('00 65535 f ')
for o in offsets:
  a.append('%010d 0 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. and output.sym from a tiff image that 
 is 35 to 60 %
 less that a tiff g4 image. Python script can

Re: [iText-questions] tiff2pdf with jbig2

2007-01-19 Thread Paulo Soares
Clever script. I'll need the jbig2 files and the resulting PDF to do
some tests. You can send it to me privately if you don't want to post it
to the world.

Paulo

 -Original Message-
 From: [EMAIL PROTECTED] 
 [mailto:[EMAIL PROTECTED] On 
 Behalf Of beppecosta
 Sent: Friday, January 19, 2007 10:58 AM
 To: itext-questions@lists.sourceforge.net
 Subject: Re: [iText-questions] tiff2pdf with jbig2
 
 
 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('00 65535 f ')
 for o in offsets:
   a.append('%010d 0 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

Re: [iText-questions] tiff2pdf with jbig2

2007-01-19 Thread Paulo Soares
Here's the code:

Document.compress = false;
RandomAccessFile rf = new RandomAccessFile(c:\\output., r);
rf.seek(11);
int width = rf.readInt();
int height = rf.readInt();
rf.seek(0);
byte[] pg = new byte[(int)rf.length()];
rf.readFully(pg);
rf.close();
rf = new RandomAccessFile(c:\\output.sym, r);
byte[] sym = new byte[(int)rf.length()];
rf.readFully(sym);
rf.close();
Document doc = new Document();
PdfWriter writer = PdfWriter.getInstance(doc, new
FileOutputStream(c:\\outjbig2.pdf));
doc.open();
Image img = new ImgRaw(width, height, 1, 1, pg);
PdfDictionary dic = new PdfDictionary();
dic.put(PdfName.FILTER, new PdfName(JBIG2Decode));
PdfDictionary dp = new PdfDictionary();
PdfStream str = new PdfStream(sym);
PdfIndirectReference iref =
writer.addToBody(str).getIndirectReference();
dp.put(new PdfName(JBIG2Globals), iref);
dic.put(PdfName.DECODEPARMS, dp);
img.setAdditional(dic);
img.scalePercent(10);
doc.add(img);
doc.close();

I'll have to make a couple of changes in Image to get rid of
Document.compress = false.

Paulo 

 -Original Message-
 From: [EMAIL PROTECTED] 
 [mailto:[EMAIL PROTECTED] On 
 Behalf Of Paulo Soares
 Sent: Friday, January 19, 2007 11:40 AM
 To: Post all your questions about iText here
 Subject: Re: [iText-questions] tiff2pdf with jbig2
 
 Clever script. I'll need the jbig2 files and the resulting PDF to do
 some tests. You can send it to me privately if you don't want 
 to post it
 to the world.
 
 Paulo
 
  -Original Message-
  From: [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED] On 
  Behalf Of beppecosta
  Sent: Friday, January 19, 2007 10:58 AM
  To: itext-questions@lists.sourceforge.net
  Subject: Re: [iText-questions] tiff2pdf with jbig2
  
  
  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('00 65535 f ')
  for o in offsets:
a.append('%010d 0 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