Como faço para recuperar uma imagem usando iText quando o URL tem redirecionamentos?

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

  •  08-07-2019
  •  | 
  •  

Pergunta

Eu estou usando o iText para gerar faturas PDF para uma aplicação web J2EE e incluídos na página é uma imagem ler a partir de uma URL construído a partir do URL pedido. Nos ambientes de desenvolvimento e teste esta multa funciona, mas na produção recebo uma java.io.IOException:. Não é um ImageFormat reconhecido

Se eu cole o URL em meu navegador, em seguida, a imagem correta é devolvido, no entanto, a solicitação é redirecionada de http para https. No meu código se eu codificar o URL de redirecionamento em seguida, a imagem é exibida corretamente.

Assim, parece que ao recuperar a imagem utilizando com.lowagie.text.Image.getInstance (URL), os redirecionamentos de URL não estão sendo seguidas. Como posso saída de uma imagem de uma URL redirecionada usando iText?

Foi útil?

Solução

Bem,

Se você perguntar para uma imagem a partir de uma URL, ele deve realmente apontar para a imagem. Se a URL aponta para uma página web que redireciona depois para outra URL (ou o código de retorno a partir do URL é um redirecionamento), então ele vai falhar.

Esta é, essencialmente devido ao método getInstance () compreensão de como usar o protocolo HTTP local para obter um arquivo, mas não compreender o suficiente protocolo HTTP para ser um cliente HTTP.

Você pode simplesmente usar o 'https' endereço, ou você pode armazenar a imagem com o seu programa e localize o como CFreiner sugere. Se nenhuma dessas opções são viáveis, então a sua única solução real é implementar código para consultar o URL, verifique se é um redirecionamento e se for seguir o redirecionamento.

Outras dicas

Existe uma razão você tem que ter isso usando a URL ?? Você tem que coincidir com a imagem que a url está apontando para? E se ele muda ou é removido?

Não tenho a certeza de sua exigência, mas pode ser mais fácil para salvar a imagem da url e colocá-lo em algum lugar dentro do seu projeto. Então você pode adicionar ao seu pdf com:

Image.getInstance("yourimage.gif");

Quando você tem vários redirecionamentos você não pode usar url. Em vez de url, você pode especificar o caminho da imagem em Image.getInstance("path"). Você pode colocar o arquivo GIF em seu pacote de implementação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top