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

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

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

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


person Caroline Orr    schedule 20.11.2008    source источник


Ответы (3)


Что ж,

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

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

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

person Jamie Love    schedule 28.11.2008

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

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

Image.getInstance("yourimage.gif");
person CFreiner    schedule 21.11.2008

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

person Ananthan    schedule 24.08.2010