Announcement

Collapse
No announcement yet.

Bookmarks mit Apache FOP 0.20.5

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bookmarks mit Apache FOP 0.20.5

    Moin zusammen,

    ich habe im Moment das Problem das ich es nicht hinbekomme in der PDF-Ausgabe ein kleines Navigationsmenü zu bekommen. Ich bin seit ca. 4 Std. am "googlen" und werd nicht schlauer.

    Das PDF wird mit Hilfe von Apache FOP 0.20.5 aus einer xml und einer xsl erstellt. Ich hab leider nicht die Möglichkeit andere Prozessoren zu testen, da es online funktionieren soll und diese Version vom FOP da benutzt wird.

    Der Inhalt des PDFs ist im Grunde nur eine einfache "etwas grössere" Telefonliste. Das ganze habe ich mit Hilfe von <xsl:for-each> gelöst. Die XML ist unterreilt in Elemente dies als Attribut den Abteilungsnamen haben und Unterelemente, in die die einzelnen Daten auch als Attribute eingetragen sind.

    Nun hätte ich gerne, das beispielsweise aus dem Element <abteilung name="Buchhaltung" >, das "Buchhaltung", welches auch innerhalb der Telefonliste als kleine Überschrift eingebaut ist, zusätzlich als bookmark (Menüpunkt) im pdf zur Verfügung steht, mit entsprechender Verlinkung zu der entsprechenden Überschrift innerhalb der Telefonliste. So könnte man dann durch anklicken des Abteilungsnamen im PDF-Menü direckt zu der Abteilung (Überschirft in der Telefonliste) springen, was sehr hilfreich ist, da die Liste sehr gross ist.

    Über hilfreiche Tipps oder auch gern über einen xsl-Einzeiler würde ich mich freuen.

    Danke im voraus.

    MfG
    Al Bundy

  • #2
    Hat sich erledigt, habs hinbekommen.

    Comment


    • #3
      Teilst du auch mit wie?
      Christian

      Comment


      • #4
        Zwischen dem layout-master-set und der page-sequence hab ich erstmal den Bookmark-Abschnitt eingefügt. Dieser besteht aus einer for-each schleife um die einzelnen Abteilungen abzufragen.
        Anschliessend kommt der foxutline Abschnitt mit dem das eigentlich Bookmarkmenü erzeugt wird:

        Code:
        <xsl:for-each select="//test/uber">
        <xsl:sort select="@abteilung" />
        <fox:outline internal-dastination=".">
        <xsl:attribute name="internal-destination" ><xsl:value-of select="./@abteilung" /></xsl:attribute>
        <fox:label><xsl:value-of select="./@abteilung" /></fox:label>
        </fox:outline>
        </xsl:for-each>
        Anschliessend muss der eigentliche Block in der page-sequence in dem ich die Abteilung auch als Überschrift ausgebe mit einer ID bezeichnet werden. So springt dann der Eintrag in den bookmarks automatisch zu den Überschriften.

        Code:
        <fo:block id="{./@abteilung}" ......./>
        <xsl:value-of select="./@abteilung" />
        </fo:block>
        Bei der ID-Vergabe sind die geschnörkelten Klammern { und } ganz wichtig, da er die ID über einen Pfad aus der XML ziehen soll. Würden diese Klammern nicht da sein, wär es ein Name, da eine ID aber eindeutig sein muss, würde hier dann eine Fehlermeldung kommen, die ID-Vergabe erfolgt in diesem Fall in einer Schleife und mehrmals kann er den gleichen Namen als ID nicht vergeben, daher der Fehler.

        Da ich Anfänger auf dem Gebiet bin, bin ich nicht sicher ob ich alles aus dem ersten Block brauche, er ist entstanden beim rumprobieren, bis er letztendlich funktionierte, kann also sein das einiges da drin überflüssig ist, späteres Problem war das mit der Vergabe der eindeutigen ID.


        Edit:
        Im Root-Element den fox-namespace angeben nicht vergessen.
        xmlns:fox="http://xml.apache.org/fop/extensions"
        Zuletzt editiert von Al Bundy; 19.03.2010, 14:39.

        Comment


        • #5
          Ok, ich habe ein neues Problem mit den Bookmarks.

          Wie kann ich mit foxutline unterpunkte erstellen, also eine Lesezeichenstruktur ?

          Als kleines Beispiel, ein unter anderem alphabetisch-sortiertes Telefonbuch (hierfür gibt es ein Lesezeichen "Alphabetische Reihenfolge"). Hier drunter möchte ich die einzelnen Buchstaben, als Unterpunkte der "Alphabetischen Reihenfolge" haben, möglichst anfangs zugeklappt, damit nicht 26 Lesezeichen das Menü überfüllt aussehen lassen.

          Wie bereits erwähnt bin ich auf Apache FOP 0.20.5 angewiesen.

          Danke im voraus.

          MfG
          Al Bundy

          Comment

          Working...
          X