Как я могу получить изображение, используя iText, если URL имеет перенаправления? - PullRequest
4 голосов
/ 20 ноября 2008

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

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

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

Ответы [ 3 ]

6 голосов
/ 28 ноября 2008

Ну

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

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

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

3 голосов
/ 21 ноября 2008

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

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

Image.getInstance("yourimage.gif");
2 голосов
/ 24 августа 2010

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

...