Thomas J.S.: XSL:FO Portrait & Landscape

Beitrag lesen

Hallo,

Eine Lösung wäre, eine Variable auszulesen und je nach dem in einer schlaufe der Reihe nach Simple-Master-Pages im hochformat zu generieren bis das erste Thema im Querformat kommt. Danach eine Schlaufe in einem neuen Simple-Master-Pages in Querformat bis wieder ein Hochformat Thema auftaucht und so weiter...
Dies ist aber eine etwas unschöne Lösung... Denn dies gibt einen Riesigen xsl:fo Code...

Und? Der XSL-FO Code muss ja alles beinhalten was das Dokument enthalten soll. Dann wird dein Code eben riesig, Alternative: du schreibst weniger. XSL-FO ist keine Programmiersprache, sonder eine Sprache für Layoutierung und wenn eine Seite anders Formatiert werden muss, dann müssen dafür die Formate numal in der XSL-FO-Sheet vorhanden sein.

Was ich möchte ist:

  • Einen Variablen Page-Master setzten oder so, wo ich in der sequence die Werte gleich irgendwie ändern könnte, oder ein Page-Master mit 2 Layouts, welche wählbar wären...

Hat jemand ne Idee? Kennt sich jemand mit anderen Page-Mastern als der Simple Page Master aus?

Du könntest so vorgehen:
Du erstellst so viele simple-page-master-s wie du brauchst, sie dienen ja als Layoutvorlage für Seitentypen.

Dann definierst du in einem page-sequence-master ein repeatable-page-master-alternatives und in diesem kannst du mehrere conditional-page-master-reference angeben. Dann kannst du beim erstellen der Seiten ein page-sequence für die Querformat verwenden.

Ein koplettes Bsp. (es sollte dir ermöglichen das Prinzip zu verstehen)

Grüße
Thomas
--------------------
<?xml version="1.0" encoding="iso-8859-1"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

fo:layout-master-set
  <fo:simple-page-master
      master-name="titelSeite"
      page-width="21cm"
      page-height="29.7cm">
    <fo:region-body margin="3.5cm" border="5pt solid silver"/>
  </fo:simple-page-master>

<fo:simple-page-master
      master-name="ersteSeite"
      page-width="21cm"
      page-height="29.7cm"
      margin="2cm">
    <fo:region-body margin="1cm"/>
  </fo:simple-page-master>

<fo:simple-page-master
      master-name="inhaltsVerz"
      page-width="21cm"
      page-height="29.7cm"
      margin="2cm 1.5cm">
    <fo:region-body margin="1cm" border-left="3pt solid blue"  border-right="3pt solid blue" padding="0pt 10pt 0pt 10pt"/>
  </fo:simple-page-master>

<fo:simple-page-master
      master-name="ungeradeSeiten"
      page-width="21cm"
      page-height="29.7cm"
      margin-top="1cm"
      margin-bottom="2cm"
      margin-left="2.5cm"
      margin-right="1.5cm">
    <fo:region-body margin="1cm" border-right="3pt solid blue" padding-right="10pt"/>
    <fo:region-after extent="1cm"/>
  </fo:simple-page-master>

<fo:simple-page-master
      master-name="geradeSeiten"
      page-width="21cm"
      page-height="29.7cm"
      margin-top="1cm"
      margin-bottom="2cm"
      margin-left="1.5cm"
      margin-right="2.5cm">
    <fo:region-body margin="1cm" border-left="3pt solid blue" padding-left="10pt"/>
    <fo:region-after extent="1cm"/>
  </fo:simple-page-master>

<fo:simple-page-master
      master-name="leerSeite"
      page-width="21cm"
      page-height="29.7cm">
    fo:region-body/
  </fo:simple-page-master>

<fo:page-sequence-master master-name="Titelblatt">
    <fo:single-page-master-reference master-reference="titelSeite"/>
  </fo:page-sequence-master>

<fo:page-sequence-master master-name="Inhaltsverzeichnis">
  <fo:repeatable-page-master-reference master-reference="inhaltsVerz"/>
  </fo:page-sequence-master>

<fo:page-sequence-master master-name="meineSeitensequenz">
    fo:repeatable-page-master-alternatives
      <fo:conditional-page-master-reference page-position="first" master-reference="ersteSeite"/>
      <fo:conditional-page-master-reference blank-or-not-blank="blank" master-reference="leerSeite"/>
      <fo:conditional-page-master-reference odd-or-even="odd" master-reference="ungeradeSeiten"/>
      <fo:conditional-page-master-reference odd-or-even="even" master-reference="geradeSeiten"/>
  </fo:repeatable-page-master-alternatives>
  </fo:page-sequence-master>
</fo:layout-master-set>

<fo:page-sequence master-reference="Titelblatt" force-page-count="no-force">
  <fo:flow flow-name="xsl-region-body">
    <!-- Inhalt der Titelseite -->
  </fo:flow>
</fo:page-sequence>

<fo:page-sequence force-page-count="no-force" initial-page-number="1" master-name="Inhaltsverzeichnis">
  <fo:static-content flow-name="xsl-region-after">
    fo:block
      fo:page-number/
    </fo:block>
  </fo:static-content>
  <fo:flow flow-name="xsl-region-body">
    <!-- Inhalt des Inhaltsverzeichnisses -->
  </fo:flow>
</fo:page-sequence>

<fo:page-sequence master-reference="meineSeitensequenz" initial-page-number="1" force-page-count="even">
  <fo:static-content flow-name="xsl-region-after">
    fo:block
      fo:page-number/
    </fo:block>
  </fo:static-content>
  <fo:flow flow-name="xsl-region-body">
    <!-- Inhalt des ersten Kapitels -->
  </fo:flow>
</fo:page-sequence>

<fo:page-sequence master-reference="meineSeitensequenz" initial-page-number="auto-odd" force-page-count="even">
  <fo:static-content flow-name="xsl-region-after">
    fo:block
      fo:page-number/
    </fo:block>
  </fo:static-content>
  <fo:flow flow-name="xsl-region-body">
    <!-- Inhalt des zweiten Kapitels -->
  </fo:flow>
</fo:page-sequence>
</fo:root>