Java代码和iText PDF库将不会在浏览器中显示运送标签图像

时间:2018-10-08 21:06:52

标签: java image itext byte apache-commons

我有一个Java方法,该方法被调用时会在浏览器中显示货运标签pdf图像。我正在使用iText以及Apache Commons库。

import org.jasypt.contrib.org.apache.commons.codec_1_3.binary.Base64;
import com.itextpdf.text.*;

...

public void constructLabel(HttpServletResponse response) {
    Document document = new Document();
    byte[] image = null;
    Image labelImage = null;
    try {
        document.setPageSize(PageSize.LETTER);
        PdfWriter.getInstance(document, response.getOutputStream());
        document.open();
        String base64Label = "a3B4GHHh6Y0m923xKj="; //<--This is longer, but I shortened it for this question
        image = Base64.decodeBase64(base64Label.getBytes());
        labelImage = Image.getInstance(image);
        labelImage.setAlignment(Image.TOP);
        labelImage.scalePercent(new Float("35"));
        document.add(labelImage);
        response.getOutputStream().write(image);
        response.setContentType("application/pdf");
        response.setContentLength(image.length);
        document.close();
    } catch (IOException | DocumentException e) {
        e.printStackTrace();
    }
}
...

对于UPS标签,它可以正常工作。当我的代码运行base-64编码的UPS标签时,该标签将显示在浏览器中。但是对于FedEx标签,我在浏览器中看到一个错误模态,显示为“无法加载PDF文档错误”。请在下面查看标签的图片(从在线PDF转换器打印)和错误模式。

这让我无处可去,因为控制台中根本没有错误,异常或堆栈跟踪。

如何获取此代码以在浏览器中显示FedEx标签的PDF图像?

UPS Label

FedEx Label

Browser Error

0 个答案:

没有答案