4

私は iText を使用して J2EE Web アプリケーションの PDF 請求書を生成しています。ページには、要求 URL から構築された URL から読み取った画像が含まれています。開発環境とテスト環境では問題なく動作しますが、本番環境では java.io.IOException: is not a registered imageformat が発生します。

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

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

4

3 に答える 3

6

良い、

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

これは基本的に、getInstance() メソッドが HTTP ロケーション プロトコルを使用してファイルを取得する方法を理解していても、HTTP クライアントになるには十分な HTTP プロトコルを理解していないためです。

「https」アドレスを使用するか、イメージをプログラムに保存して、CFreiner が提案するように見つけることができます。これらのオプションのいずれも実行できない場合、唯一の実際の解決策は、URL を照会するコードを実装し、それがリダイレクトであるかどうかを確認し、リダイレクトに従うかどうかを確認することです。

于 2008-11-28T00:02:36.990 に答える
3

URLを使用してこれを取得する必要がある理由はありますか?? URLが指している画像と一致する必要がありますか? 変更または削除された場合はどうなりますか?

あなたの要件はよくわかりませんが、URL から画像を保存して、プロジェクト内のどこかに配置する方が簡単かもしれません。次に、次の方法でそれを pdf に追加できます。

Image.getInstance("yourimage.gif");
于 2008-11-21T03:36:54.517 に答える
2

複数のリダイレクトがある場合、url は使用できません。url の代わりに、 で画像のパスを指定できますImage.getInstance("path")。展開パッケージに gif ファイルを配置できます。

于 2010-08-24T04:38:42.497 に答える