Ikke
Ikke

Reputation: 101261

XSL FO inline alignment

I need to get text aligned right and left on the same line. This should be possible, but i can't seem to find a way. I'm using Apache FOP to convert xml to pdf.

Can someone help me to get this right?

Upvotes: 28

Views: 39565

Answers (6)

Morticia A. Addams
Morticia A. Addams

Reputation: 383

I create two blocks and on the second block I set this attribute:

margin-top="-4mm"

or what your font size and margin bottom are (just to look like they are on same line)

Upvotes: 0

rstormer
rstormer

Reputation: 51

<fo:inline-container vertical-align="top" inline-progression-dimension="49.9%">
    <fo:block>left content</fo:block>
</fo:inline-container>
<fo:inline-container vertical-align="top" inline-progression-dimension="49.9%">
    <fo:block>right-content</fo:block>
</fo:inline-container>

Verified working with FOP 2.0

Upvotes: 5

Hilton Campbell
Hilton Campbell

Reputation: 6095

Elegance wasn't a stated requirement, but this should fit the bill:

<fo:block text-align-last="justify">
  LEFT TEXT
  <fo:leader leader-pattern="space" />
  RIGHT TEXT
</fo:block>

This works by justifying the last line of text in the block, so that the text begins at the left of the line and ends at the right. The leader, which is usually used on Table of Contents pages, stretches to fill the space between the left and right text. Normally it is used as <fo:leader leader-pattern="dots" />, which produces a stretch of periods, but in this case it merely provides a gulf of space.

Upvotes: 46

Hilton Campbell
Hilton Campbell

Reputation: 6095

This will do the trick:

<fo:table>
  <fo:table-column />
  <fo:table-column />

  <fo:table-body>
    <fo:table-row>
      <fo:table-cell>
        <fo:block>LEFT TEXT</fo:block>
      </fo:table-cell>
      <fo:table-cell>
        <fo:block text-align="right">RIGHT TEXT</fo:block>
      </fo:table-cell>
    </fo:table-row>
  </fo:table-body>
</fo:table>

Upvotes: 12

EthR
EthR

Reputation: 1934

I dont't have the time right now to test this but check out http://www.w3.org/TR/xsl/#fo_float

float one right float the other left - i'd give it a shot if I was looking to do what you are describing

you could also use a table

unless by aligned right AND left you mean justified...

Upvotes: 0

Martijn Laarman
Martijn Laarman

Reputation: 13536

This is possible i'm not sure what the exact output is but have you tried:

<fo:block-container>
   <fo:block text-align="left">text</fo:block>
   <fo:block text-align="right">text</fo:block>
</fo:block-container >

I haven't done XSLFO in a while but i can certainly recommend Stylus Studio for XSL-FO development (and in general XML), The in-app debugging and previewing saved my ass on finishing deadlines on time. You can make Stylus work with the Apache FOP processor as well.

PS: I would have double checked if i had Apache FOP etcetera set up correctly back at home as well.

Upvotes: -1

Related Questions