我正在使用iText为J2EE Web应用程序生成PDF发票,并且页面上包含从请求URL构造的URL中读取的图像.在开发和测试环境中,这工作正常,但在生产中我得到一个java.io.IOException:不是一个可识别的图像格式.
如果我将网址粘贴到我的浏览器中,则返回正确的图像,但请求会从http重定向到https.在我的代码中,如果我对重定向URL进行硬编码,则图像会正确显示.
因此,当使用com.lowagie.text.Image.getInstance(URL)检索图像时,似乎没有遵循URL上的重定向.如何使用iText从重定向的URL输出图像?
好,
如果您要求URL中的图像,它必须实际指向图像.如果URL指向随后重定向到另一个URL的网页(或者URL中的返回代码是重定向),那么它将失败.
这主要是由于getInstance()方法了解如何使用HTTP位置协议来获取文件,但不了解HTTP协议足以成为HTTP客户端.
您可以使用"https"地址,也可以将图像与程序一起存储,并找到CFreiner建议的地址.如果这些选项都不可行,那么您唯一真正的解决方案是实现代码来查询URL,检查它是否是重定向以及是否遵循重定向.