Apache FOP/自定义图像不显示在 PDF 中

Apache FOP / custom image does not show in PDF

我尝试使用 FOP 2.6 将 FO 文件转换为 PDF。 我在 Windows.

上使用标准配置文件

由于不支持一种图像格式,我创建了自定义的 PreLoader、ImageLoaderFactory 和 ImageConverter。 它们是通过服务条目注册的,从日志中我可以看到它们正在被使用:

DEBUG: Chosen pipeline: Loader: org.apache.xmlgraphics.image.loader.impl.ImageLoaderRaw@2dad1d4c Converters: [image.loader.custom.ImageConverterCustom2PNG@26080b64]
DEBUG: Creating new Source for figure\sb.custom
DEBUG: convert custom image: org.apache.xmlgraphics.image.loader.impl.ImageRawStream: figure\sb.custom (image/custom)
DEBUG: custom image converted to png
DEBUG: Image is made cacheable: figure\sb.custom (image/custom)
DEBUG: New ImageAdapter created for key: figure\sb.custom
INFO: Rendered page #86.

但是图像没有显示在生成的 PDF 文件中...

转换器将自定义格式转换为 PNG 和 returns RAW_PNG:

ByteArrayInputStream convertedStream = new ByteArrayInputStream(outBuffer.toByteArray());
PNGFile pngFile = new PNGFile(convertedStream, originalInfo.getOriginalURI());
ImageRawPNG image = pngFile.getImageRawPNG(originalInfo);

我也试过转换为 JPG 也没有成功。

直接使用转换后的文件是可行的: 而不是:

<fo:external-graphic src="url(figure\sb.custom)" width="auto" height="auto" content-width="160mm" content-height="auto"/>

这个:

<fo:external-graphic src="url(custom.png)" width="auto" height="auto" content-width="160mm" content-height="auto"/>

显示图像。

转换器没有链接吗? 还是我错过了一些重要的东西?

我终于找到了根本原因。 创建图像大小时,我的图像预加载器缺少这些行:

size.setResolution(context.getSourceResolution());
size.calcSizeFromPixels();