在 PDFBox 中渲染 SVG 时更改颜色

问题描述 投票:0回答:1

有人知道如何使用 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);

没有改变任何东西。

java svg pdfbox graphics2d
1个回答
0
投票

试试这个:

diagram.getRoot().addAttribute("fill", AnimationElement.AT_CSS, colorLight);+
© www.soinside.com 2019 - 2024. All rights reserved.