私からの最初の質問。現在、XSLFOを使用して構文をFOに変換し、最終的にPDFに変換するグラフ作成サービスを修正しています。
以前は、PDFエクスポートでWebからのPNGグラフを使用していましたが、これは非常に見苦しい結果を生成するため、代わりにSVGforPDFを使用することにしました。
ただし、SVGはSVGキャンバスに適切に拡大縮小されていないようです。
XSLFOに遭遇する前の構文は次のとおりです。
<img src="someimage.svg">
そして、これが私が使用しているXSLFOです:
<xsl:template match="img">
<fo:block space-after="12pt">
<fo:instream-foreign-object width="20cm" height="15cm" content-width="scale-to-fit" content-height="scale-to-fit" scaling="uniform" background-color="#cccccc">
<svg:svg x="0" y="0" width="100" height="100" viewBox="0 0 100 100">
<svg:image x="0" y="0" width="100" height="100">
<xsl:if test="@src">
<xsl:attribute name="xlink:href">
<xsl:choose>
<xsl:when test="starts-with(@src, 'http://')">
<xsl:value-of select="@src"/>
</xsl:when>
<xsl:when test="starts-with(@src, 'https://')">
<xsl:value-of select="@src"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($baseurl, @src)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
</svg:image>
</svg:svg>
</fo:instream-foreign-object>
</fo:block>
</xsl:template>
SVGはPDFに表示され、キャンバス内に含まれているように見えますが、何らかの理由でSVGを適切に拡大縮小することができません。それは本当に、本当に巨大であり、その結果、SVGの非常にトリミングされたバージョンになります。
私はここで提案が不足しています-これを経験した人はいますか?
PS:画像は最新バージョンのBatikを使用して作成されており、幅と高さが適切に設定されています。