Это использование Apache POI 5.2.5
с XMLSlideShow
. Хотя изменение цвета текста без ссылок работает должным образом, если ссылка добавлена в XSLFTableCell
, изменение цвета не работает. Ниже приведен пример фрагмента кода (на Kotlin) –
val tbl = slide.createTable()
tbl.anchor = Rectangle(10, 10, 700, 150)
val tr = tbl.addRow()
val td = tr.addCell()
val p = td.addNewTextParagraph()
val r = p.addNewTextRun()
r.setText("Search")
val link = r.createHyperlink()
link.address = "http://google.com"
r.fontSize = 14.0
r.setFontColor(Color(42, 198, 151)) // this does not works
Он отображается в синем цвете по умолчанию.
Текст-гиперссылка не имеет одного цвета шрифта. Текст имеет один цвет, когда на него есть ссылка, и другой цвет, когда ссылка уже была использована. В Office Open XML это определяется в цветовых схемах темы. По умолчанию текст ссылки имеет синий цвет, если на него есть ссылка, и пурпурный, если по ссылке уже переходили.
Если вам нужно это изменить, вам нужно изменить цветовые схемы темы.
Пример:
...
XSLFSlide slide ...
...
XSLFTheme theme = slide.getTheme();
theme.getXmlObject().getThemeElements().getClrScheme().getHlink().getSrgbClr().setVal(new byte[]{(byte)255,0,0});
theme.getXmlObject().getThemeElements().getClrScheme().getFolHlink().getSrgbClr().setVal(new byte[]{0,(byte)255,0});
...