Как получить изображение с помощью iText, если URL-адрес имеет перенаправление?

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

  •  08-07-2019
  •  | 
  •  

Вопрос

Я использую iText для создания счетов в формате PDF для веб-приложения J2EE, и на странице включено изображение, считанное с URL-адреса, созданного на основе URL-адреса запроса.В средах разработки и тестирования это работает нормально, но в рабочей среде я получаю исключение java.io.IOException:не является признанным форматом изображения.

Если я вставляю URL-адрес в свой браузер, возвращается правильное изображение, однако запрос перенаправляется с http на https.Если в моем коде я жестко запрограммирую URL-адрес перенаправления, изображение будет отображаться правильно.

Таким образом, кажется, что при получении изображения с помощью com.lowagie.text.Image.getInstance(URL) перенаправления по URL-адресу не выполняются.Как я могу вывести изображение из перенаправленного URL-адреса с помощью iText?

Это было полезно?

Решение

Хорошо,

Если вы запрашиваете изображение по URL-адресу, оно должно фактически указывать на изображение.Если URL-адрес указывает на веб-страницу, которая затем перенаправляется на другой URL-адрес (или код возврата URL-адреса является перенаправлением), то произойдет сбой.

По сути, это связано с тем, что метод getInstance() понимает, как использовать протокол определения местоположения HTTP для получения файла, но недостаточно понимает протокол HTTP, чтобы быть HTTP-клиентом.

Вы можете просто использовать адрес https или сохранить изображение в своей программе и найти его, как предлагает CFreiner.Если ни один из этих вариантов невозможен, то единственное реальное решение — реализовать код для запроса URL-адреса, проверить, является ли это перенаправлением, и следовать ли ему.

Другие советы

Есть ли причина, по которой вы должны получить это, используя URL ?? Вы должны соответствовать изображению, на которое указывает URL? Что если он изменится или будет удален?

Я не уверен в ваших требованиях, но может быть проще сохранить изображение из URL-адреса и поместить его где-нибудь в вашем проекте. Затем вы можете добавить его в свой PDF с помощью:

Image.getInstance("yourimage.gif");

Если у вас несколько перенаправлений, вы не можете использовать URL. Вместо URL вы можете указать путь к изображению в Image.getInstance (" path ") . Вы можете поместить файл gif в свой пакет развертывания.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top