URLにリダイレクトがある場合、iTextを使用して画像を取得するにはどうすればよいですか?

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

  •  08-07-2019
  •  | 
  •  

質問

iTextを使用してJ2EE Webアプリケーション用のPDF請求書を生成しています。ページに含まれているのは、リクエストURLから作成されたURLから読み取った画像です。開発環境とテスト環境ではこれは正常に機能しますが、実稼働環境ではjava.io.IOExceptionが発生します。これは認識されたイメージ形式ではありません。

URLをブラウザに貼り付けると、正しい画像が返されますが、リクエストはhttpからhttpsにリダイレクトされます。私のコードでは、リダイレクトURLをハードコーディングすると、画像が正しく表示されます。

したがって、com.lowagie.text.Image.getInstance(URL)を使用して画像を取得する場合、URLのリダイレクトは追跡されないようです。 iTextを使用してリダイレクトされたURLから画像を出力するにはどうすればよいですか?

役に立ちましたか?

解決

まあ、

URLから画像を要求する場合、実際に画像を指している必要があります。 URLが別のURLにリダイレクトするWebページを指す場合(またはURLからの戻りコードがリダイレクトである場合)、失敗します。

これは基本的に、getLocation()メソッドが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