无法将base64字符串转换为pdf

时间:2016-02-11 06:06:25

标签: java pdf-writer

    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 个答案:

答案 0 :(得分:0)

错误是由medikmResourceRequest.getResourceImage()b64Image.getBytes()引起的。

您的程序不应通过String传输byte[](图像数据)。 当JVM将byte[]转换为String时,如果字节数据无法映射到String的charset的char。 它将替换为?。 <{1}}返回的byte[]与原始数据不同,导致您的图片损坏。