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