Tengo un problema al generar un PDF en java con el protocolo XFA 2.4, el problema es, si en el formulario XFA solo hay textos no hay problema pero si intento añadir una imagen, esta imagen no aparece. 
 
Estoy usando este metodo para añadir la imagen. He probado varias maneras y no funciona. Si el PDF no tiene este protocolo si muestra la imagen.
 
public void anadirImagen(String PsRutaPDFOrigen, String PsRutaPDFDestino)
	{
		try
		{
					/**/
			//Método 6: Change Image button field in pre-existing PDF
			// Ver: http://threebit.net/mail-archive/ite.../msg03174.html
			{
				PdfReader pdf = new PdfReader(PsRutaPDFOrigen);
				PdfStamper stp = new PdfStamper(pdf, new FileOutputStream(PsRutaPDFDestino));
				com.itextpdf.text.pdf.PdfWriter writer = stp.getWriter();
				com.itextpdf.text.Image img = com.itextpdf.text.Image.getInstance("C:/Logalty/Pruebas/imagen.jpg");
				AcroFields af = stp.getAcroFields();
				//AcroFields.Item item = af.getFieldItem("Ordenes01[0].ImageField1[0]");
 
			    Set<String> objSetCampos = af.getFields().keySet();
 
			    for (String sNombreCampo : objSetCampos)
			    {
			    	System.out.println("  Tratando el campo: " + sNombreCampo + " - " + af.getField(sNombreCampo) + " - " + af.getFieldType(sNombreCampo) );
 
			    	AcroFields.Item item = af.getFieldItem(sNombreCampo);
 
					PdfDictionary dic = (PdfDictionary)item.getWidget(0);
 
					dic = (PdfDictionary)PdfReader.getPdfObject(dic.get(PdfN  ame.AP));
					dic = (PdfDictionary)PdfReader.getPdfObject(dic.get(PdfN  ame.N));
					dic = (PdfDictionary)PdfReader.getPdfObject(dic.get(PdfN  ame.RESOURCES));
					dic = (PdfDictionary)PdfReader.getPdfObject(dic.get(PdfN  ame.XOBJECT));
					dic = (PdfDictionary)PdfReader.getPdfObject(dic.get(PdfN  ame.FRM));
					dic = (PdfDictionary)PdfReader.getPdfObject(dic.get(PdfN  ame.RESOURCES));
					dic = (PdfDictionary)PdfReader.getPdfObject(dic.get(PdfN  ame.XOBJECT));
 
					dic = (PdfDictionary)PdfReader.getPdfObject(dic.get(PdfN  ame.IMAGE));
 
					com.itextpdf.text.pdf.PdfObject obj = dic.get((PdfName)dic.getKeys().iterator().next());
					if (obj.isIndirect()) 
					{
					   PdfDictionary tg = (PdfDictionary)PdfReader.getPdfObject(obj);
					   PdfName type = (PdfName)PdfReader.getPdfObject(tg.get(PdfName.SUB  TYPE));
					   if (PdfName.IMAGE.equals(type)) 
					   {
					       PdfReader.killIndirect(obj);
					       com.itextpdf.text.Image maskImage = img.getImageMask();
					       if (maskImage != null)
					           writer.addDirectImageSimple(maskImage);
					       writer.addDirectImageSimple(img, (com.itextpdf.text.pdf.PRIndirectReference)obj);
					   }
					}
			    } // for
				stp.close();
			}
 
 
 
		} // try 
 
		catch (IOException e)
		{
			e.printStackTrace();
		}
		catch (DocumentException e)
		{
			e.printStackTrace();
		}
 
	  } // public void anadirImagen(String PsRutaPDFOrigen, String PsRutaPDFDestino)
 
Muchas gracias por las molestias. 
   
 


