Я нашел источник matplotlib, относящийся к SVG, здесь: matplotlib svg backend
Я нашел это:
if (rgbFace is not None and len(rgbFace) == 4 and rgbFace[3] != 1.0
and not forced_alpha):
attrib['fill-opacity'] = short_float_fmt(rgbFace[3])
И это:
if (len(rgbFace) == 4 and rgbFace[3] != 1.0
and not forced_alpha):
attrib['fill-opacity'] = short_float_fmt(rgbFace[3])
Это выглядело многообещающе, и я начал тестировать, как заставить этот код выполняться. Оказалось, вам нужно отключить прозрачность (альфа)! Кроме того, вы должны использовать RGBA вместо RGB hex для цвета. В моем случае я хотел полупрозрачные коробки вокруг легенд, и у меня изначально было:
bbox_args = dict(boxstyle="square", fc="W", alpha=0.5)
Чтобы заставить его работать, я изменил его на:
bbox_args = dict(boxstyle="square", fc="#FFFFFF80")
После этого, Экспортированный SVG имеет непрозрачность заполнения вместо непрозрачности. Обратите внимание, что и непрозрачность, и непрозрачность заполнения могут работать в вашем случае. В Chrome оба работали, но в pdf, экспортированном из jasperreports, работала только непрозрачность заполнения.