Here's the code to replace images in PDFs, in Java and C#. It will replace the first image in the first page. You'll need the latest CVS.

PdfReader pdf = new PdfReader("in.pdf");
PdfStamper stp = new PdfStamper(pdf, new FileOutputStream("c:\\out.pdf"));
PdfWriter writer = stp.getWriter();
Image img = Image.getInstance("image.png");
PdfDictionary pg = pdf.getPageN(1);
PdfDictionary res = (PdfDictionary)PdfReader.getPdfObject(pg.get(PdfName.RESOURCES)); PdfDictionary xobj = (PdfDictionary)PdfReader.getPdfObject(res.get(PdfName.XOBJECT));
if (xobj != null) {
   for (Iterator it = xobj.getKeys().iterator(); it.hasNext();) {
       PdfObject obj = xobj.get((PdfName)it.next());
       if (obj.isIndirect()) {
           PdfDictionary tg = (PdfDictionary)PdfReader.getPdfObject(obj);
PdfName type = (PdfName)PdfReader.getPdfObject(tg.get(PdfName.SUBTYPE));
           if (PdfName.IMAGE.equals(type)) {
               PdfReader.killIndirect(obj);
               Image maskImage = img.getImageMask();
               if (maskImage != null)
                   writer.addDirectImageSimple(maskImage);
               writer.addDirectImageSimple(img, (PRIndirectReference)obj);
               break;
           }
       }
   }
}
stp.close();

PdfReader pdf = new PdfReader("in.pdf");
PdfStamper stp = new PdfStamper(pdf, new FileStream("out.pdf", FileMode.Create));
PdfWriter writer = stp.Writer;
Image img = Image.GetInstance("image.png");
PdfDictionary pg = pdf.GetPageN(1);
PdfDictionary res = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES)); PdfDictionary xobj = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));
if (xobj != null) {
   foreach (PdfName name in xobj.Keys) {
       PdfObject obj = xobj.Get(name);
       if (obj.IsIndirect()) {
           PdfDictionary tg = (PdfDictionary)PdfReader.GetPdfObject(obj);
PdfName type = (PdfName)PdfReader.GetPdfObject(tg.Get(PdfName.SUBTYPE));
           if (PdfName.IMAGE.Equals(type)) {
               PdfReader.KillIndirect(obj);
               Image maskImage = img.ImageMask;
               if (maskImage != null)
                   writer.AddDirectImageSimple(maskImage);
               writer.AddDirectImageSimple(img, (PRIndirectReference)obj);
               break;
           }
       }
   }
}
stp.Close();

Paulo


-------------------------------------------------------
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&kid=120709&bid=263057&dat=121642
_______________________________________________
iText-questions mailing list
iText-questions@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions

Reply via email to