2010-02-26 173 views
6

来自我的第一个问题;我目前正在修复一个图形服务,它使用XSLFO将我们的语法转换为FO,并最终将其转换为PDF。使用XSLFO显示SVG

之前,我们一直在使用PNG图形从PDF出口网络,但是这创造了真难看的结果,所以我们决定用SVG去代替PDF。

然而,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的裁剪版本非常丰富。

我跑出来的建议,在这里 - 有没有人在这里有这方面的经验?

PS:该图像是使用蜡染的最新版本创建的,宽度和高度被设置正常。

回答

3

其实,河道内,异物似乎没有能够在所有缩放SVG,甚至没有使用正确的帆布集。通过设置正确的画布上的SVG,FO:外部图形的伎俩;-)

感谢你们给我你的秘诀:-)这里是什么工作:

<fo:external-graphic content-width="25cm" content-height="16cm"> 
     <xsl:if test="@src"> 
      <xsl:attribute name="src"> 
       <xsl:choose> 
        <xsl:when test="starts-with(@src, 'http://')"> 
         <xsl:value-of select="concat('url(',@src,')')"/> 
        </xsl:when> 
        <xsl:when test="starts-with(@src, 'https://')"> 
         <xsl:value-of select="concat('url(',@src,')')"/> 
        </xsl:when> 
        <xsl:otherwise> 
         <xsl:value-of select="concat('url(',$baseurl, @src,')') + ')'"/> 
        </xsl:otherwise> 
       </xsl:choose> 
      </xsl:attribute> 
     </xsl:if> 
    </fo:external-graphic> 
2

它是大是因为FO:插播-异物具有大的宽度和高度;如果您是XSL-FO的初学者,您应该尝试Ecrion Designer - 您可以直观地编辑XSLFO并使用鼠标调整大小。 干杯!