Domanda

Sto usando iText per generare fatture PDF per un'applicazione Web J2EE e inclusa nella pagina è un'immagine letta da un URL creato dall'URL della richiesta. Negli ambienti di sviluppo e test funziona bene, ma in produzione ottengo un java.io.IOException: non è un formato immagine riconosciuto.

Se incollo l'URL nel mio browser, viene restituita l'immagine corretta, tuttavia la richiesta viene reindirizzata da http a https. Nel mio codice se codifico l'URL di reindirizzamento, l'immagine viene visualizzata correttamente.

Quindi sembra che quando si recupera l'immagine usando com.lowagie.text.Image.getInstance (URL), i reindirizzamenti sull'URL non vengano seguiti. Come posso generare un'immagine da un URL reindirizzato usando iText?

È stato utile?

Soluzione

Bene,

Se chiedi un'immagine da un URL, deve effettivamente puntare all'immagine. Se l'URL punta a una pagina Web che quindi reindirizza a un altro URL (o il codice di ritorno dall'URL è un reindirizzamento), allora fallirà.

Ciò è essenzialmente dovuto al metodo getInstance () che comprende come usare il protocollo di localizzazione HTTP per ottenere un file, ma non capisce abbastanza il protocollo HTTP per essere un client HTTP.

Potresti semplicemente usare l'indirizzo 'https', oppure puoi salvare l'immagine con il tuo programma e localizzare come suggerisce CFreiner. Se nessuna di queste opzioni è fattibile, l'unica vera soluzione è implementare il codice per eseguire una query sull'URL, verificare se si tratta di un reindirizzamento e se segue il reindirizzamento.

Altri suggerimenti

C'è un motivo per ottenerlo usando l'URL ?? Devi abbinare l'immagine a cui punta l'URL? Cosa succede se cambia o viene rimosso?

Non sono sicuro del tuo requisito, ma potrebbe essere più semplice salvare l'immagine dall'URL e posizionarla da qualche parte all'interno del tuo progetto. Quindi puoi aggiungerlo al tuo pdf con:

Image.getInstance("yourimage.gif");

Quando hai più reindirizzamenti non puoi usare url. Invece di url, puoi specificare il percorso dell'immagine in Image.getInstance (" percorso ") . È possibile inserire il file gif nel pacchetto di distribuzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top