有人知道如何使用 pdfbox 将 svg 渲染为 pdf 时更改颜色吗?
我正在使用以下代码:
File svgFile = new File("roots.svg");
SVGUniverse svgUniverse = new SVGUniverse();
SVGDiagram diagram = svgUniverse.getDiagram(svgUniverse.loadSVG(svgFile.toURL()));
PdfBoxGraphics2D graphics = new PdfBoxGraphics2D(document, 32, 32);
graphics.setColor(Color.green);
try {
diagram.render(graphics);
} catch (SVGException e) {
e.printStackTrace();
} finally {
graphics.dispose();
}
PDFormXObject xform = graphics.getXFormObject();
try (PDPageContentStream contentWriter = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, false)) {
AffineTransform transform = AffineTransform.getTranslateInstance(0, 0);
transform.scale(2,2);
xform.setMatrix(transform);
contentWriter.setNonStrokingColor(Color.green);
contentWriter.setStrokingColor(Color.green);
contentWriter.drawForm(xform);
}
具有以下依赖项:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.25</version>
</dependency>
<dependency>
<groupId>com.weblookandfeel</groupId>
<artifactId>svg-salamander</artifactId>
<version>1.1.2.2</version>
</dependency>
但图标显示为黑色而不是绿色。
先谢谢大家了!
contentWriter.setNonStrokingColor(Color.green);
contentWriter.setStrokingColor(Color.green);
没有改变任何东西。
试试这个:
diagram.getRoot().addAttribute("fill", AnimationElement.AT_CSS, colorLight);+