我正在尝试使用部分不透明的SVG将jasper报告导出为pdf,但在pdf中,不透明为白色。
图像表示为:
<imageExpression><![CDATA[net.sf.jasperreports.renderers.SimpleRenderToImageAwareDataRenderer.getInstance(byte[] data)]]></imageExpression>
在后台看来,jasper正在使用Apache BatikRenderer和XML Graphics。这甚至是透明性支持的示例:
https://xmlgraphics.apache.org/fop/trunk/graphics.html#svg
根据此链接,应支持透明度:https://xmlgraphics.apache.org/fop/dev/svg.html
甚至还有一个PDF示例都可以透明地工作。
[在查看示例中的SVG如何定义透明度之后,我注意到我的SVG有所不同:
在示例中使用“填充不透明度”,而我的SVG仅使用“不透明度”。
通过在SVG中将不透明度更改为填充不透明度,该透明度在jasper生成的pdf中也起作用。 (相关线程svg opacity vs fill-opacity)
现在我面临2个选择:一种解决方案是编写一个脚本,该脚本修改svg xml并用fill-opacity代替opacity。另一个选择是查看SVG的来源是否可以更改,以便首先使用填充不透明度获得SVG。在我的情况下,输出SVG的源是matplotlib,下一个问题是如何使matplotlib以填充不透明度而不是不透明度来输出SVG: