von Patrick Gundlach |

Neue Version 4.4

Die Version 4.4 des speedata Publishers enthält wieder einige Verbesserungen und Erweiterungen. Dazu gehören:

  • Transparenz (für Text und Bilder)
  • MetaPost Integration
  • Binaries für Windows 64
  • Logische Dokumentstruktur (Hauptteil, Anhang, …)
  • Logische und tatsächliche Seitennummern
  • Verbesserte Hyperlinks innerhalb eines Dokuments (Hyperlinks auf Seiten, Seitennummern, Leitlinien, klickbare Bilder und Kästen)
  • und natürlich viele Fehlerkorrekturen (die meisten bei Tabellenköpfen und -füßen)

Transparenz

Beim Einbinden von Bildern und bei der Definition von Farben kann man die Deckung angeben. Hier ist die Syntax bei Bildern:

<PlaceObject>
    <!-- 100 = volle Deckkraft, 0 = unsichtbar -->
    <Image file="_samplea.pdf" opacity="20"/>
</PlaceObject>

Ähnlich funktioniert es bei Farben:

<DefineColor name="transparentblue"
   model="rgb" r="0" g="0" b="100" alpha="20" />

MetaPost Integration

MetaPost ist eine Programmiersprache, mit der sich Grafiken beschreibend erstellen lassen. Im letzte Blogpost hatte ich schon beschrieben, was es damit auf sich hat. Im Publisher lassen sich insbesondere Bilder, Boxen, Tabellenzellen und Seiten damit »verzieren«, z.B. um Tabellenlinien und -hintergründe zu malen oder den Seitenbereich zu visualisieren. Ein Fall aus dem Beispiele-Repository

Mit MetaPost gezeichnete Seitenbegrenzungen.

Windows 64-Bit Binaries

Nun sind die Binaries für Plattformen ausschließlich in 64-Bit Versionen verfügbar. Für Windows gibt es leider einen blöden Nebeneffekt, dass die Installation nicht in einem Verzeichnis sein darf, das Umlaute enthält. Der speedata Publisher gibt einen Hinweis aus. Die Ursachenforschung geht weiter, ich tippe auf ein Problem mit Lua und der aktuellen Codepage, die nicht mit UTF-8 zurecht kommt.

Logische Dokumentstruktur und logische Seitenzahlen

Bei PDF-Dokumenten gibt es drei Ebenen von Seitenzahlen:

  1. Die tatsächliche Seitenzahl. Also einfach die Seite von vorne an gezählt.
  2. Die im PDF-Viewer angezeigte Seitenzahl. Die kann von der tatsächlichen Seitenzahl abweichen und auch z.B. als römische Ziffer dargestellt werden.
  3. Die im PDF sichtbare (»gedruckte«) Seitenzahl.

Idealerweise sind 2 und 3 immer gleich.

<Layout xmlns="urn:speedata.de:2009/publisher/en"
	xmlns:sd="urn:speedata:2009/publisher/functions/en">

    <DefineMatter
        name="mainmatter"
        label="uppercase-romannumeral" />

    <Pagetype
        name="allPages"
        test="true()"
        part="mainmatter"/>

    <Record element="data">
        <PlaceObject>
            <Textblock>
                <Paragraph>
                    <Value>Seite: </Value>
                    <Value select="
            concat(
                sd:current-page(),
                '/',
                sd:visible-pagenumber(sd:current-page())"
            />
                </Paragraph>
            </Textblock>
        </PlaceObject>
    </Record>
</Layout>

Hier wird ein Abschnitt »mainmatter« definiert, der auf römische Nummerierung der Seitenzahlen umschaltet. Die Ausgabe gibt erst die tatsächliche Seitenzahl aus, anschließend die für den Benutzer sichtbare Seitenzahl.

Für jeden Dokumentabschnitt kann man festlegen, ob die Seitenzahlen wieder bei 1 anfangen sollen. Im Buchdruck mit Bleisatz war es üblich, das Inhaltsverzeichnis mit römischen Seitenzahlen zu setzen und den eigentlichen Text mit arabischen Zahlen, die wieder bei 1 beginnen. Damit war es möglich, das Inhaltsverzeichnis nachträglich zu erstellen, ohne die Seitenzahlen wieder zu ändern. Das ist zwar heute dank Computer nicht mehr notwendig, aber in machen Fällen soll das nachgeahmt werden. Dafür kann man den Mechanismus der logischen Seitenzahlen nutzen.

In Hyperlinks lassen sich nun direkt Seitenzahlen angeben:

<Record element="data">
    <PlaceObject>
        <Textblock>
            <Paragraph>
                <A page="2">
                    <Value>Link auf Seite 2</Value>
                </A>
            </Paragraph>
        </Textblock>
    </PlaceObject>
    <NewPage />
    <PlaceObject>
        <Textblock>
            <Paragraph>
                <Value>Seite 2</Value>
            </Paragraph>
        </Textblock>
    </PlaceObject>
</Record>

Das ist ganz praktisch für Inhaltsverzeichnisse, die auf Seiten verweisen und nicht direkt auf Überschriften.

Außerdem kann nun ein Bild oder eine Box als Hyperlinkfläche genutzt werden:

<PlaceObject>
    <A page="2">
        <Image file="_samplea.pdf" width="2" />
    </A>
</PlaceObject>

Ausblick

Die nächste Version des Publishers wird eine stark verbesserte HTML-Fähigkeit haben. Es werden sich HTML-Seiten ohne Umwege mit CSS stylen und direkt als PDF ausgeben lassen. Ich bitte weiterhin um Unterstützung für die Entwicklung des Publishers über GitHub Sponsoring. Damit unterstützt ihr die Weiterentwicklung des Publishers und sichert euch priorisierten Support!