Comment récupérer une image en utilisant iText lorsque l'URL contient des redirections?

StackOverflow https://stackoverflow.com/questions/305337

  •  08-07-2019
  •  | 
  •  

Question

J'utilise iText pour générer des factures PDF pour une application Web J2EE. Sur la page, une image est lue à partir d'une URL construite à partir de l'URL de la demande. Dans les environnements de développement et de test, cela fonctionne bien, mais en production, java.io.IOException: n’est pas un format d’image reconnu.

Si je colle l'URL dans mon navigateur, la bonne image est renvoyée, mais la demande est redirigée de http vers https. Dans mon code, si je code en dur l'URL de redirection, l'image est affichée correctement.

Il semble donc que lors de la récupération de l'image à l'aide de com.lowagie.text.Image.getInstance (URL), les redirections sur l'URL ne sont pas suivies. Comment puis-je exporter une image à partir d'une URL redirigée à l'aide d'iText?

Était-ce utile?

La solution

Eh bien,

Si vous demandez une image à partir d'une URL, elle doit en réalité pointer sur l'image. Si l'URL pointe vers une page Web qui redirige ensuite vers une autre URL (ou si le code de retour de l'URL est une redirection), il échouera.

Cela est essentiellement dû à la méthode getInstance (), qui comprend comment utiliser le protocole de localisation HTTP pour obtenir un fichier, mais ne comprend pas suffisamment le protocole HTTP pour être un client HTTP.

Vous pouvez simplement utiliser l’adresse 'https' ou stocker l’image avec votre programme et localiser le fichier proposé par CFreiner. Si aucune de ces options n'est réalisable, votre seule solution réelle consiste à implémenter le code permettant d'interroger l'URL, à vérifier s'il s'agit d'une redirection et si elle est suivie.

Autres conseils

Y a-t-il une raison pour laquelle vous devez l'obtenir à l'aide de l'URL? Devez-vous correspondre à l'image que l'URL pointe? Et si cela change ou est supprimé?

Je ne suis pas sûr de votre besoin, mais il serait peut-être plus facile de sauvegarder l'image de l'URL et de la placer quelque part dans votre projet. Ensuite, vous pouvez l'ajouter à votre pdf avec:

Image.getInstance("yourimage.gif");

Lorsque vous avez plusieurs redirections, vous ne pouvez pas utiliser d'URL. Au lieu de l’URL, vous pouvez spécifier le chemin de l’image dans Image.getInstance ("chemin") . Vous pouvez placer le fichier gif dans votre package de déploiement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top