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();
上面的代码对于大型图片无法正常工作,它们会被裁剪,但对于小图片来说效果很好。
请建议。
答案 0 :(得分:0)
错误是由medikmResourceRequest.getResourceImage()
和b64Image.getBytes()
引起的。
您的程序不应通过String传输byte[]
(图像数据)。
当JVM将byte[]
转换为String时,如果字节数据无法映射到String的charset的char。
它将替换为?
。 <{1}}返回的byte[]
与原始数据不同,导致您的图片损坏。