Archief - [XML] .fo layout vraagje

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

passero

Legacy Member
ik heb hier een xslt dat gebruik maakt van de fo dinges en daarvan wordt een pdf gegenereert.
Perfect dus!

Alleen heb ik een klein vraagje rond de layout... Ik weet niet of het mogelijk is maar wou het toch eens vragen.

Is er een mogelijkheid om bepaalde blocks of tables ofzo zodanig te definieren zodat als er niet genoeg plaats voor hen is op de huidige pagina, dat hij daarvoor een nieuwe pagina begint?

Voorbeeldje:

Code:
<xsl:for-each select="cust/Q_CUST/ROW">
<xsl:variable name="cust_code"><xsl:value-of select="SOLD_CUST_CODE"/></xsl:variable>
      <fo:block space-after="0.4cm" space-before="0.8cm">
          <fo:table font-size="10pt">
          <fo:table-column column-width="61.5mm"/>
          <fo:table-column column-width="110mm"/>
          <fo:table-body>
            <fo:table-row>
              <fo:table-cell>
                <fo:block font-weight="bold">Business</fo:block>
              </fo:table-cell>
              <fo:table-cell>
                <fo:block><xsl:value-of select="BUSINESS_DESCR"/></fo:block>
              </fo:table-cell>
            </fo:table-row>
            <fo:table-row>
              <fo:table-cell>
                <fo:block font-weight="bold">Customer</fo:block>
              </fo:table-cell>
              <fo:table-cell>
                <fo:block><xsl:value-of select="SOLD_CUST_NAME"/></fo:block>
                <fo:block><xsl:value-of select="SOLD_CUST_ADDR1"/></fo:block>
                <fo:block><xsl:value-of select="SOLD_CUST_ADDR2"/></fo:block>
                <fo:block><xsl:value-of select="SOLD_CUST_ADDR3"/></fo:block>
              </fo:table-cell>
            </fo:table-row>
          </fo:table-body>   
          </fo:table>
      </fo:block>
</xsl:for>

Als output op mijn PDF krijg ik dus

Business-------------------------business_descr
Customer------------------------Lijn1
---------------------------------Lijn2
---------------------------------Lijn3

Nu gebeurt het soms dat Lijn1 en Lijn 2 op 1 pagina staan en dat dan Lijn3 op een nieuwe pagina begint. Ik zou dus die blok samen willen houden en voor die blok een nieuwe pagina beginnen en niet enkel voor Lijn3.

Khoop dat het beetje duidelijk is ;)

Mee

Legacy Member
Misschien een heel domme oplossing, maar als ge nu die 3 lijnen tesamen nog eens in een aparte block zet, gaat die dat dan niet automatisch doen?

Zo dus:
Code:
<fo:table-cell>
       
                <fo:block><xsl:value-of select="SOLD_CUST_NAME"/></fo:block>
       [COLOR="Red"]<fo:block>  [/COLOR] 
                <fo:block><xsl:value-of select="SOLD_CUST_ADDR1"/></fo:block>
                <fo:block><xsl:value-of select="SOLD_CUST_ADDR2"/></fo:block>
                <fo:block><xsl:value-of select="SOLD_CUST_ADDR3"/></fo:block>
       [COLOR="Red"]</fo:block>[/COLOR]
</fo:table-cell>

Het is maar een ideetje, ik ben zelfs niet zeker of dat wel mag...

j design

Legacy Member
Het mag wel volgens mij maar ik vrees dat het niet de juiste oplossing gaat geven.
Je kan het wel proberen.

passero

Legacy Member
dat heb ik geprobeerd maar hij doet het niet. Hij gaat geen rekening houden met die globale block.

u, ik heb iets gevonden. Er is een atribuut keep-together.within-page="always" ofzo iets. Maar helaas... Apache fop dat we gebruiken voor het converteren ondersteunt die niet. Ze is enkel geïmplementeerd op de fo:table-row dus als ik via "blind tables" werk speciaal voor de layout dan lukt het wel maar tis redelijk wat overkill...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan