Невозможно преобразовать строку base64 в pdf

    Document document = new Document();

    String b64Image = medikmResourceRequest.getResourceImage();
    String fileName = resourceDir+"/"+medikmResourceRequest.getPhysicianId()+"/"+medikmResourceRequest.getName()+" "+ System.currentTimeMillis() +".pdf";

    PdfWriter.getInstance(document, new FileOutputStream(new File(fileName)));
    document.open();

    byte[] decoded = Base64.decodeBase64(b64Image.getBytes());

    document.add(Image.getInstance(decoded));
    document.close();

Выше код не работает должным образом для больших изображений, они обрезаются, но он работает нормально для небольших изображений.

Пожалуйста, предложите.

1 ответ

Ошибка вызвана medikmResourceRequest.getResourceImage() а также b64Image.getBytes(),

Ваша программа НЕ должна передаваться byte[](данные изображения) через строку. Когда JVM конвертировать byte[] String, если байтовые данные не могут быть сопоставлены с символом набора символов String. Это будет заменить ?, byte[] вернулся b64Image.getByte() Это отличается от оригинальных данных и привести к повреждению вашего изображения.

Другие вопросы по тегам