Le code Java et la bibliothèque PDF iText n'afficheront pas l'image de l'étiquette d'expédition dans le navigateur


J'ai une méthode Java qui, lorsqu'elle est appelée, affiche une image pdf d'étiquette d'expédition dans mon navigateur. J'utilise iText, ainsi que les bibliothèques Apache Commons pour cela.

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();
    }
}
...

Pour les étiquettes UPS, cela fonctionne bien. Lorsque mon code exécute une étiquette UPS codée en base 64, l'étiquette s'affiche dans le navigateur. Mais pour les étiquettes FedEx, je reçois un modal d'erreur dans le navigateur qui dit "Erreur impossible de charger le document PDF."Veuillez voir les photos des étiquettes (imprimées à partir d'un convertisseur PDF en ligne) et modal d'erreur dessous.

Cela m'a laissé dans l'obscurité en ce sens qu'il n'y a aucune erreur ou exception ou trace de pile dans la console.

Comment puis-je obtenir ce code pour afficher une image PDF de l'étiquette FedEx dans le navigateur?

Étiquette UPS

Étiquette FedEx

Message D'Erreur Du Navigateur

Author: aCarella, 2018-10-09