フィルター、グラデーション、またはマスキングを使用している場合、この 1:1 を PDF に変換することは不可能である可能性があります。このような場合、コンバーターは通常、ベクター データを保持して非常に異なる外観にする代わりに、ベクター データをラスター化して同様の外観を実現します。
編集: あなたの例では、次の XSLT 変換を使用して、フィルターの代わりに塗りつぶし属性が使用されていることを確認できます。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@fill[ancestor::svg:symbol]" priority="1">
<xsl:attribute name="fill">currentColor</xsl:attribute>
</xsl:template>
<xsl:template match="@filter[starts-with(.,'url(#colorFilter-')]">
<xsl:attribute name="color">
<xsl:value-of select="concat('#',substring(.,18,6))"/>
</xsl:attribute>
</xsl:template>
<xsl:template match="svg:use[not(@filter)]">
<xsl:copy>
<xsl:attribute name="color">#fff</xsl:attribute>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
これは、この特定の SVG でフィルターがどのように命名されているかに完全に依存しているため、他のものには適用できません。ただし、色はまったく正しくありません。このカラー マトリックスの理由を知りたいと思います。
0.4 0 0 0 0
0 0.6 0 0 0
0 0 0.8 0 0
0 0 0 1 0
白に適用しても明らかに結果にはなりませんrgba(40%,60%,80%,1)
。