Première question de ma part; Je corrige actuellement un service graphique qui utilise XSLFO pour convertir notre syntaxe en FO, et la convertir en PDF à la fin.Affichage de SVG en utilisant XSLFO
Auparavant, nous utilisions des graphiques PNG du Web dans les exportations PDF, mais cela crée des résultats vraiment laids, nous avons donc décidé d'aller avec SVG pour PDF à la place. Cependant, le SVG ne semble pas évoluer correctement dans le canevas SVG.
Voici la syntaxe avant courir dans XSLFO:
<img src="someimage.svg">
Et voici le XSLFO J'utilise:
<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>
Le SVG apparaît dans le PDF, et il ne semble contenu dans la toile - mais pour une raison quelconque, je ne peux pas l'adapter correctement. C'est juste vraiment, vraiment énorme, et le résultat est une version extrêmement recadrée du SVG.
Je suis à court de suggestions ici - y at-il quelqu'un ici qui a de l'expérience avec cela? PS: L'image est créée à l'aide de la dernière version de Batik, et la largeur et la hauteur sont définies correctement.