为什么这个块容器强制第二页?

时间:2011-03-31 17:43:13

标签: svg xsl-fo

我有一个XSL-FO样式表,里面有一个SVG,它是整个页面的大小。我试图绝对将图像放在SVG之上。当我添加该图像时,第二页被强制进入PDF输出。如果没有块或SVG,则只有一页。这是代码:

<xsl:template match="MyTag"> 
  <fo:block>
    <fo:block-container absolute-position="absolute" top="110px" left="557px" height="185px" width="160px">
      <fo:block>
        <fo:external-graphic>
          <xsl:attribute name="src">
            <xsl:value-of select="Image"/>
          </xsl:attribute>
          <xsl:attribute name="content-height">185px</xsl:attribute>
        </fo:external-graphic>
      </fo:block>
    </fo:block-container>
    <fo:instream-foreign-object>
      <svg>
        <!-- The full page sized SVG created by Inkscape here -->
      </svg>
    </fo:instream-foreigh-object>
  </fo:block>
</xsl:template>

任何想法,我会在这里做错了,迫使第二个空白页?我的理解是,如果某些东西是绝对定位的,它不应该影响元素的流动,但它似乎在这里。

对于它的价值,我最初试图将图像作为<image>标签放在SVG中,但它从未出现过,我不确定它是否与pdf渲染器(IBEX)有关或是其他一些问题,所以我试图解决这个问题。

1 个答案:

答案 0 :(得分:0)

我想出了一个解决方法。基本上,我改变了包含<svg>的块:

<fo:block-container absolute-position="absolute" height="5in">
    <fo:block>
        <fo:instream-foreign-object>
            <svg>
                <!-- The full page sized SVG created by Inkscape here -->
            </svg>
        </fo:instream-foreigh-object>
    </fo:block>
</fo:block-container>

由于块绝对定位,允许整页大小的SVG流出其5in块之外,但它会让布局管理器认为它有足够的空间用于图像和单个页面上的SVG(它一样)。