On Mon, 17 Apr 2006, Paulo Soares wrote:

You shouldn't be messing with PRStream. Create a new PdfStream with the right filters to replace the old PRStream. Don't forget to kill the old PRStream with PdfReader.killIndirect().

I have been pondering this and trying to do things the right way as hinted at by Paulo Soares, but I haven't managed to get it working out. The code I have that works (but requires a hack in the iText library in its full version) looks something like this in a very condensed form:

    void foo (PRStream image)
    {
        File file = new File("someimage.cmyk");
        FileInputStream stream = new FileInputStream(file);
        byte[] data = new byte[file.length()];

        stream.read(data, 0, file.length());
        image.setData(data);
    }

If I am not to mess with the PRStream but instead make a new PdfStream, my problem revolves around how to set up the new PdfStream in a manner so it has all the properties of the old one. I can copy the PdfDictionary values easily enough, but I also need to make sure it has the same positions etc. within the document. Since the one and only thing I wish to do is really to replace the stream data, the suggested solution seems like a lot more work to me. Work that I can't even get right at the moment. But I still want to do this "the right way" and absolutely don't want to resort to hacking the iText library. So I am interested in how to set up this new PdfStream object in such a way that it will completely replace the old one. Answers are appreciated, as usual.

Regards,

Petter Nyström

P.S. I see how a few same people answer dozens of questions on this list every day, and I would just like to say that your efforts are noticed and greatly appreciated! =) D.S.

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On
Behalf Of Petter Nyström
Sent: Monday, April 17, 2006 1:14 PM
To: [email protected]
Subject: Re: [iText-questions] Far cry for help with JPEG in PDF

It seems my problem is indeed with that setData() uses some sort of
compression filter on the data, which is not desirable when
dealing with
JPEG. I added a simple method setDataRaw() in
com/lowagie/text/pdf/PRStream.java like this:

     public void setDataRaw (byte[] data)
     {
         this.offset = -1;
         bytes = data;
         setLength(bytes.length);
     }

And calling this instead of setData() when dealing with JPEG fixes my
problem. What I am asking for now is, I guess, if there are
any official
way of achieving the same effect as I have with my method. (I
see that
this result is also achieved with setData() if the
Document.compression
field is false, but I'm not sure that is the correct way
either.) Because
I don't really want to make my own changes in the iText
library since that
makes upgrading so much more difficult in the future.

Any word on this?

Regards,

Petter Nyström

On Mon, 17 Apr 2006, Petter Nyström wrote:

Good evening list!

This problem might not have anything to do with Itext as
such. It's mostly a
cry out to see if anyone on this list have an idea for a
solution to my
problem. I hope that is okay.

My problem then, is this: I extract images from PDF
documents using Itext.
Sometimes, this is a JPEG/JFIF image. (I treat any image
with a DCTDecode
filter as a JPEG. Is that incorrect?) I then convert
extracted images into
TIFF and perform some image processing before they are
turned back into their
internal PDF format, e.g. JPEG or raw CMYK etc.. The image
format conversions
are made with the ImageMagick API.

I then proceed to replace the data of the images in the PDF
with the data of
the images that has gone through conversion and image
processing. For this I
use the setData() method in the PRStream object of the
images I find in the
PDF, and a PdfStamper to write a new PDF.

The unfortunate result is that JPEG images in the new PDF
document appear
garbled, while other image formats I have been working with
come through
fine.

My premier theory to explain this is that the JPEG image
generated by
ImageMagick is somehow not compatible with what is standard
within the PDF.
So while ImageMagick can make sense out of a JPEG come from
a PDF, a PDF
cannot make sense out of a JPEG come from ImageMagick.

My secondary theory is that there could be some problem
with how I do the
replacement. Should I have to apply some filters to the
data before I call
the setData() method?

Obviously I have tried a whole lineup of approaches but
always with the same
dissapointing result. So this mail is a hope that someone
out there has a
clue as to what might go wrong and what one might do to
stop it from doing
so. If you have one such clue, please let me know of it!

Regards,

Petter Nyström


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking
scripting language
that extends applications into web and mobile media. Attend
the live webcast
and join the prime developer group breaking into this new
coding territory!

http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&;
dat=121642
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking
scripting language
that extends applications into web and mobile media. Attend
the live webcast
and join the prime developer group breaking into this new
coding territory!
http://sel.as-us.falkag.net/sel?cmd=k&kid0944&bid$1720&dat1642
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions



-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0709&bid&3057&dat1642
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions

Reply via email to