I'll modify as long as I know I can have them by the
time I go to production, which shouldn't be until
July...

Thanks,
Matt

--- Paulo Soares <[EMAIL PROTECTED]> wrote:
> They will be public in the next version together
> with some others. If you
> don't want to mess with the library put your code in
> the package
> com.lowagie.text.pdf.
> 
> Best Regards,
> Paulo Soares
> 
> > -----Original Message-----
> > From:       Matt Benson [SMTP:[EMAIL PROTECTED]
> > Sent:       Thursday, March 13, 2003 15:36
> > To: Paulo Soares; itext-questions
> > Subject:    Re: [iText-questions] modifying metadata
> > 
> > Except that when I tried your solution, I found
> that
> > PdfIndirectReference and PdfWriter.addToBody() are
> > both package-private so I can't get to them
> without
> > modifying the library... :(
> > 
> > -Matt
> > 
> > --- Matt Benson <[EMAIL PROTECTED]> wrote:
> > > Oops.  :)  Okay, thanks for the solution, Paulo!
> > > 
> > > -Matt
> > > 
> > > 
> > > --- Paulo Soares <[EMAIL PROTECTED]> wrote:
> > > > And now you have a stream as a direct object,
> > > which
> > > > is illegal.
> > > > 
> > > > Best Regards,
> > > > Paulo Soares
> > > > 
> > > > ----- Original Message -----
> > > > From: "Matt Benson" <[EMAIL PROTECTED]>
> > > > To: "Paulo Soares" <[EMAIL PROTECTED]>;
> > > > "itext-questions"
> > > > <[EMAIL PROTECTED]>
> > > > Sent: Wednesday, March 12, 2003 23:11
> > > > Subject: RE: [iText-questions] modifying
> metadata
> > > > 
> > > > 
> > > > > Okay, I think I found it.  Of course using
> > > > PRStream
> > > > > wouldn't be any better than PdfStream
> because
> > > > PRStream
> > > > > extends PdfStream and doesn't override
> toPdf().
> > > > > PdfStream.toPdf() is implemented as always
> > > > returning
> > > > > null.  I didn't know why that should be, so
> I
> > > > changed
> > > > > it.  It was:
> > > > >
> > > > >     public byte[] toPdf(PdfWriter writer) {
> > > > >         dicBytes = super.toPdf(writer);
> > > > >         return null;
> > > > >     }
> > > > >
> > > > > but I changed it to:
> > > > >
> > > > >     public byte[] toPdf(PdfWriter writer) {
> > > > >         dicBytes = super.toPdf(writer);
> > > > >         return dicBytes;
> > > > >     }
> > > > >
> > > > > and it seems to work now.
> > > > >
> > > > >
> > > > > -Matt
> > > > >
> > > > > --- Matt Benson <[EMAIL PROTECTED]>
> wrote:
> > > > > > One obvious problem is that this example
> was
> > > > using
> > > > > > PdfStream, which always returns null from
> > > toPdf.
> > > > > > However, I had already been using PRStream
> > > > before
> > > > > > that
> > > > > > with the same results.  I am going back to
> > > > PRStream
> > > > > > in
> > > > > > the debugging to which I have been forced
> to
> > > > turn,
> > > > > > due
> > > > > > to the terrible problem of time zones!  :)
> > > > > >
> > > > > >
> > > > > >
> > > > > > --- Matt Benson <[EMAIL PROTECTED]>
> wrote:
> > > > > > > Okay, I am STUCK.  I can play with
> XMP/RDF,
> > > > that's
> > > > > > > fine, and I've been doing it.  But I am
> > > > finding
> > > > > > > myself
> > > > > > > unable to actually change the metadata
> of a
> > > > given
> > > > > > > PDF.
> > > > > > >  I have culled together a fairly short
> > > > example;
> > > > > > can
> > > > > > > anyone see any obvious problems?
> > > > > > >
> > > > > > >
> > > > > > > import java.io.FileOutputStream;
> > > > > > > import java.io.BufferedOutputStream;
> > > > > > > import java.io.ByteArrayOutputStream;
> > > > > > >
> > > > > > > import com.lowagie.text.pdf.PdfName;
> > > > > > > import com.lowagie.text.pdf.PRStream;
> > > > > > > import com.lowagie.text.pdf.PdfObject;
> > > > > > > import com.lowagie.text.pdf.PdfReader;
> > > > > > > import com.lowagie.text.pdf.PdfStream;
> > > > > > > import com.lowagie.text.pdf.PdfStamper;
> > > > > > > import
> com.lowagie.text.pdf.PdfDictionary;
> > > > > > >
> > > > > > >
> > > > > > > public class MinimalModifyPdfMetadata
> > > > > > > {
> > > > > > >
> > > > > > >   public byte[] modifyMetadata(String
> pdf)
> > > > > > >    throws Exception
> > > > > > >   {
> > > > > > >     ByteArrayOutputStream baos = new
> > > > > > > ByteArrayOutputStream();
> > > > > > >
> > > > > > >     PdfReader pdfReader = new
> > > PdfReader(pdf);
> > > > > > >     byte[] b =
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
PdfReader.getStreamBytes((PRStream)(PdfReader.getPdfObject(
> > > > > > >      pdfReader.getCatalog().get(new
> > > > > > > PdfName("Metadata")))),
> > > > pdfReader.getSafeFile());
> > > > > > >
> > > > > > >     System.out.println("original
> metadata");
> > > > > > >     System.out.println(new String(b));
> > > > > > >
> > > > > > >     PdfStamper stamp = new
> > > > PdfStamper(pdfReader,
> > > > > > > baos);
> > > > > > >
> > > > > > >     //set the metadata
> > > > > > >     pdfReader.getCatalog().put(new
> > > > > > > PdfName("Metadata"), new PdfStream(b));
> > > > > > >
> > > > > > >     try
> > > > > > >     {
> > > > > > >       stamp.close();
> > > > > > >     }//end try
> > > > > > >     catch (Exception ex)
> > > > > > >     {
> > > > > > >       ex.printStackTrace(System.err);
> > > > > > >     }//end catch Exception
> > > > > > >
> > > > > > >     return baos.toByteArray();
> > > > > > >   }//end modifyMetadata
> > > > > > >
> > > > > > >
> > > > > > >   public static void main(String[] args)
> > > > > > >    throws Exception
> > > > > > >   {
> > > > > > >     int code = 0;
> > > > > > >
> > > > > > >     if (args.length > 1)
> > > > > > >     {
> > > > > > >       BufferedOutputStream bos
> > > > > > >        = new BufferedOutputStream(new
> > > > > > > FileOutputStream(args[1]));
> > > > > > >
> > > > > > >       bos.write(new
> > > > > > >
> > > > > >
> > > >
> > >
> MinimalModifyPdfMetadata().modifyMetadata(args[0]));
> > > > > > >       bos.close();
> > > > > > >     }//end if at least 2 args
> > > > > > >     else
> 
=== message truncated ===


__________________________________________________
Do you Yahoo!?
Yahoo! Web Hosting - establish your business online
http://webhosting.yahoo.com


-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open! 
Get cracking and register here for some mind boggling fun and 
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
_______________________________________________
iText-questions mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/itext-questions

Reply via email to