Yuri Dorokhov
Yuri Dorokhov

Reputation: 726

How to display blocks in multiple rows in XSL-FO?

I am trying to add images in multiple rows.

Here is my code:

<fo:block-container reference-orientation="90" >
    <xsl:for-each select="Icons/Icon">
        <fo:block>
            <fo:external-graphic src="{@Source}"/>
        </fo:block>
    </xsl:for-each>
</fo:block-container>

The <fo:block-container> is placed in an <fo:table-cell>.

You can see examples below where text is other part of the table.

How it looks:

current result

But it should look like this:

desired result

I tried to add width for block-container, but it doesn't help.

Upvotes: 0

Views: 661

Answers (1)

Tony Graham
Tony Graham

Reputation: 8068

It can't wrap because you're using a rotated fo:block-container, so what you're seeing is the rotated equivalent of blocks overflowing past the bottom of the page.

It's not clear to me why you're rotating the images, but you could put each graphic inside a separate fo:inline-container and set the reference-orientation on each. (See https://www.w3.org/TR/xsl11/#fo_inline-container)

<fo:table-cell>
  <fo:block>
    <fo:inline-container reference-orientation="90">
      <fo:block>
        <fo:external-graphic src="..." />
      </fo:block>
    </fo:inline-container>
    ...
  </fo:block>
</fo:table-cell>

Upvotes: 1

Related Questions