Foros del Web » Programación para mayores de 30 ;) » Java »

XFA PDF itext

Estas en el tema de XFA PDF itext en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/08/2011, 02:23
 
Fecha de Ingreso: septiembre-2007
Mensajes: 268
Antigüedad: 14 años, 10 meses
Puntos: 8
XFA PDF itext

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.

Última edición por Erickvk; 16/08/2011 a las 02:42

Etiquetas: itext, pdf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:33.