Erste Frage von mir; Ich repariere gerade einen graphischen Dienst, der XSLFO verwendet, um unsere Syntax in FO zu konvertieren und am Ende in PDF zu konvertieren.SVG mit XSLFO anzeigen
Früher haben wir PNG-Graphen aus dem Internet in den PDF-Exporten verwendet, aber das erzeugt wirklich hässliche Ergebnisse, also haben wir uns entschieden, stattdessen SVG für PDF zu verwenden.
Das SVG scheint jedoch nicht ordnungsgemäß in die SVG-Zeichenfläche zu skalieren.
Hier ist die Syntax, bevor sie in XSLFO laufen:
<img src="someimage.svg">
Und hier ist die XSLFO Ich verwende:
<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>
Die SVG im PDF angezeigt wird, und es ist enthalten scheinen innerhalb der Leinwand - aber aus welchem Grund auch immer, ich kann es nicht richtig skalieren. Es ist einfach sehr, sehr groß und das Ergebnis ist eine extrem kurze Version des SVG.
Ich habe keine Vorschläge mehr - gibt es hier jemanden, der Erfahrung damit hat?
PS: Das Bild wird mit der neuesten Version von Batik erstellt, und die Breite und Höhe ist richtig eingestellt.