2016-02-11 3 views
0
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(); 

Над кодом не работает должным образом для больших изображений, они обрезаются, но работают отлично для небольшого изображения.Невозможно преобразовать строку base64 в pdf

Просьба предложить.

+0

попытайтесь установить разрешение перед преобразованием в pdf doc, его очевидное, если вы попытаетесь написать изображение большого размера, оно не будет соответствовать документу, иначе вам нужно будет установить макет страницы, может быть портретным или альбомным. – Vishrant

+0

Спасибо за ответ. Можете ли вы рассказать, как я могу установить размер ... –

ответ

0

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

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

+0

Спасибо за ответ. Моя проблема решена с помощью 'Rectangle one = new Rectangle (1500,1100); document.setPageSize (один); ' –

Смежные вопросы