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 > { > System.err.println( > "Usage: MinimalModifyPdfMetadata input-file > output-file"); > }//end else, wrong # of args > > System.exit(code); > }//end main > > }//end class MinimalModifyPdfMetadata > > > I get the following stack trace when I run the above > code: > > java.lang.NullPointerException > at > java.io.OutputStream.write(OutputStream.java:65) > at > com.lowagie.text.pdf.PdfDictionary.toPdf(PdfDictionary.java:152) > at > com.lowagie.text.pdf.PdfIndirectObject.<init>(PdfIndirectObject.java: > 138) > at > com.lowagie.text.pdf.PdfIndirectObject.<init>(PdfIndirectObject.java: > 107) > at > com.lowagie.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:255) > at > com.lowagie.text.pdf.PdfWriter.addToBody(PdfWriter.java:1361) > at > com.lowagie.text.pdf.PdfStamperImp.close(PdfStamperImp.java:107) > at > com.lowagie.text.pdf.PdfStamper.close(PdfStamper.java:104) > at > MinimalModifyPdfMetadata.modifyMetadata(MinimalModifyPdfMetadata.java > :36) > at > MinimalModifyPdfMetadata.main(MinimalModifyPdfMetadata.java:57) > > --- Leonard Rosenthol <[EMAIL PROTECTED]> wrote: > > At 03:00 PM 3/10/2003 -0800, Matt Benson wrote: > > >Is XMP the only valid format for the Metadata > > stream? > > > > Yes. > > > > > > >What means would you suggest for reading this? > > > > The Adobe XMP Toolkit is the best, but > that > > assumes Mac OS or > > Windows. Since it's XML you can really use any > XML > > parser you want - > > though starting with an RDF parser (on top of your > > XML) will help... > > > > > > Leonard > > > --------------------------------------------------------------------------- > > Leonard Rosenthol > > <mailto:[EMAIL PROTECTED]> > > Chief Technical Officer > > <http://www.pdfsages.com> > > PDF Sages, Inc. > > 215-629-3700 (voice) > > > > > > > > > ------------------------------------------------------- > > This sf.net email is sponsored by:ThinkGeek > > Welcome to geek heaven. > > http://thinkgeek.com/sf > > _______________________________________________ > > iText-questions mailing list > > [EMAIL PROTECTED] > > > https://lists.sourceforge.net/lists/listinfo/itext-questions > > > __________________________________________________ > 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 __________________________________________________ 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