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);
davy.ai
Parece que estás intentando convertir una matriz
byte[]
en un objetoImage
. El métodoImage.getInstance()
requiere un objetoString
oURL
como su parámetro. Puedes intentar convertir la matrizbyte[]
en un objetoString
y luego pasarla al métodoImage.getInstance()
.Puedes usar el método
Base64.getEncoder().encodeToString()
para convertir la matrizbyte[]
en un objetoString
.