es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se pudo recuperar la firma de la base de datos. Se presentó el error java.io.IOException: El arreglo de bytes no es un formato de imagen reconocido.

He almacenado con éxito las firmas de usuario en la base de datos. Pero, al intentar recuperar la lista de firmas de usuario en un bucle en un documento PDF, se arrojó la excepción de java.io.IOException en la línea Image signpr = Image.getInstance(userSign); indicando que la matriz de bytes no es un formato de imagen reconocido. ¿Alguien puede decirme cómo resolver este problema?

A continuación se muestra mi código:

PdfPTable userTable = new PdfPTable(1);
if (user.size() != 0) {

    userTable .setWidthPercentage(100.0f);
    userTable .setWidths(new float[] { 6.5f });

    for (int i = 0; i < user.size(); i++) {
        for (User e : user) {

            byte[] userSign = e.getuserSigns().getBytes(); 
            if(userSign!=null) {
                Image signpr = Image.getInstance(userSign); //sign
                signpr.scaleToFit(100,80);
                signpr.setAbsolutePosition(450, 80); 
                doc.add(signpr);
            }                           
            PdfPCell userName = new PdfPCell(new Phrase(e.getuserNames()));
            userName.setHorizontalAlignment(Element.ALIGN_CENTER);
            userTable .addCell(userName);

            userName.setBorder(Rectangle.NO_BORDER);
        }
    }
}
doc.add(userTable);
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando convertir una matriz byte[] en un objeto Image. El método Image.getInstance() requiere un objeto String o URL como su parámetro. Puedes intentar convertir la matriz byte[] en un objeto String y luego pasarla al método Image.getInstance().

    Puedes usar el método Base64.getEncoder().encodeToString() para convertir la matriz byte[] en un objeto String.

    byte[] userSign = e.getuserSigns().getBytes(); 
    if(userSign!=null) {
        String userSignString = Base64.getEncoder().encodeToString(userSign);
        Image signpr = Image.getInstance(userSignString); //firma
        signpr.scaleToFit(100,80);
        signpr.setAbsolutePosition(450, 80); 
        doc.add(signpr);
    }                           
    

Comments are closed.