Il codice Java e la libreria PDF iText non visualizzeranno l'immagine dell'etichetta di spedizione nel browser


Ho un metodo Java che quando viene chiamato, visualizza un'immagine pdf dell'etichetta di spedizione nel mio browser. Sto usando iText, così come le librerie Apache Commons per questo.

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

Per le etichette UPS, funziona bene. Quando il mio codice esegue un'etichetta UPS codificata base-64, l'etichetta viene visualizzata nel browser. Ma per le etichette FedEx, ottengo un errore modale nel browser che dice "Errore non è riuscito a caricare il documento PDF."Si prega di vedere le immagini delle etichette (stampate da un convertitore PDF online) e l'errore modale sotto.

Questo mi ha lasciato al buio in quanto non ci sono errori o eccezioni o tracce di stack nella console.

Come posso ottenere questo codice per mostrare un'immagine PDF dell'etichetta FedEx nel browser?

Etichetta UPS

Etichetta FedEx

Errore del browser

Author: aCarella, 2018-10-09