FOP 无法从 url 加载图像
Posted
技术标签:
【中文标题】FOP 无法从 url 加载图像【英文标题】:FOP fails to load image from url 【发布时间】:2020-05-13 20:24:07 【问题描述】:我有一个返回图像的 web api。我正在尝试将其集成到我的 FO 模板中。
<fo:block font-weight="normal" text-align="left">
<fo:external-graphic src="url($URL)">
</fo:external-graphic>
</fo:block>
其中 $URL 是“http://servername/images/id”。
我收到以下错误:
HTTP 状态 500 - 内部服务器错误类型异常报告
消息 Servlet 执行引发异常
描述 服务器遇到了一个意外情况 阻止它完成请求。
例外
javax.servlet.ServletException: Servlet 执行抛出异常 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 根本原因
java.lang.NoClassDefFoundError: com/sun/media/jai/codec/FileCacheSeekableStream
我可以使用 http://servername/images/id url 直接访问图像,因此 url 是正确的。
【问题讨论】:
重要的一行是最后一行:您缺少 JAI(Java 高级成像)jar。您必须下载它并将其放入(或链接)到lib
文件夹中。
谢谢,刚刚发布了问题的根本原因。
从其他人的问题也没有回答,看起来 JAI 安装和 JDK/JRE 文件夹有问题。
【参考方案1】:
根本原因是 FOP 无法为 PDF 文件加载 PNG 图像。它适用于 JPEG/BMP/GIF。
https://xmlgraphics.apache.org/fop/2.0/graphics.html
【讨论】:
这不是文档所说的:“PNG 图像通过 Image I/O 编解码器 (ImageLoaderImageIO) 和本机支持都得到支持。PDF 和 PS 输出可以支持 FOP 本机支持,并且可以通过内部编解码器 (ImageLoaderPNG) 或直接处理未解码的图像 (ImageLoaderRawPNG) 启用。更多信息可在 wiki 页面中找到。支持透明度,但不保证适用于每种输出格式。"以上是关于FOP 无法从 url 加载图像的主要内容,如果未能解决你的问题,请参考以下文章