headerbild blog

PDF-Standards

Immer wieder gibt es Nachfragen, ob der Publisher auch PDF/X erzeugen würde. Oder PDF/A. Oder ob die Druckerei das PDF vom Publisher überhaupt verarbeiten kann.

Dazu gab es immer meine Antwort, die ich reines Gewissens geben kann:

»Lieber Kunde, mach dir keine Sorgen. Bisher hat immer alles gut geklappt, ich hatte bisher noch keinerlei Reklamationen.«

PDF/X und PDF/A sind nur Konformitätserklärungen, keine Besonderheiten bei der PDF-Erzeugung. Auch ohne diese Erklärungen entsprechen die PDF des Publishers den Anforderungen dieser Normen, eine gewisse Disziplin des Anwenders vorausgesetzt (siehe unten).

Ich nutze die Software LuaTeX um das PDF zu erzeugen. LuaTeX erzeugt sehr sauberes PDF. Als Nachfolger von PDFTeX ist es eine der ersten Anwendungen überhaupt, die PDF schreiben konnte. Insofern gibt es hier keine Überraschungen.

Am meisten wird nachgefragt, ob die benutzten Schriftarten eingebettet werden. Ja, selbstverständlich werden sie das, sonst könnte der Empfänger gar nichts mit der Datei anfangen. (Hinweis: es wird immer nur die wirklich benutzte Teilmenge der Buchstaben eingebunden).

Ein paar Fallstricke gibt es doch: verlangt die Druckerei z.B., dass nur CMYK-Bilder enthalten sein dürfen, muss der Benutzer entsprechendes Bildmaterial auch zur Verfügung halten. Zwar kann das Dokument noch gedruckt werden, aber eine hundertprozentige Farbkorrektheit wird die Druckerei nicht garantieren. Insofern ist der Anwender des Publishers für die Ausgangsmaterialien verantwortlich, eine Korrektur während des Laufs wird nicht vorgenommen.

PDF/X, PDF/A und PDF/UA

Viele Anwender hätten doch gerne das Siegel, dass die PDF-Datei einem Standard entspricht. Hier gibt es mal wieder viele Standards zum Aussuchen. Für die Druckerei ist PDF/X wichtig. PDF/A ist für die Langzeitarchivierung interessant und PDF/UA (universal access) für die Barrierefreiheit.

von Patrick Gundlach |

SVG Dateien mit Inkscape einbinden

Mit der Version 3.5.5 gibt es ein neues Feature: SVG-Dateien können ohne Konvertierung eingebunden werden, sofern das Programm Inkscape installiert ist.

Die alten Hasen erkennen sicherlich das Ghostscript-Beispiel. Hier als SVG-Quelle. Aus: https://upload.wikimedia.org/wikipedia/commons/f/fd/Ghostscript_Tiger.svg

Die Konvertierung nach PDF erfolgt im Hintergrund und unsichtbar für den Anwender.

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

  <Record element="data">
    <PlaceObject>
      <Image file="Tiger.svg" width="10"/>
    </PlaceObject>
  </Record>
</Layout>
von Patrick Gundlach |

Version 3.5.4

Die neue Version 3.5.4 des Publishers hat hauptsächlich den internen Datei-Loader verändert. Es gab ein paar Probleme mit der alten Schnittstelle in der alten Version:

  • Unter Windows konnten keine Bilder mit Umlauten geladen werden.
  • Manche Befehle (z.B. sd:aspectratio(), siehe die Stelle im Handbuch) konnten nur mit Dateien umgehen, die im Suchbaum zu finden sind.
  • Es gab verschiedene Befehle für Bilder im lokalen Dateisystem und für Bilder, die über http geladen werden.

Die neue Version vereinheitlicht nun alle Dateizugriffe. Die Dateinamen können nun überall folgende Formate haben:

  • Absoluter Pfad im Dateisystem: /pfad/zur/datei.png.
  • Relativer Pfad im Dateisystem: ../verzeichnis/datei.png.
  • Datei innerhalb des Suchbaums datei.png. Vor dem Start wird das aktuelle Verzeichnis rekursiv durchsucht (siehe das Handbuch).
  • Absolute Pfade unter Windows wie c:\Users\....\datei.png.
  • file-Schema: file://c/Users/Joe%20User/datei.png oder file:///home/user/datei.png.
  • http-Schema: http://placekitten.com/g/400/300 oder https: https://placekitten.com/g/400/300

Also z.B. <Image file="https://placekitten.com/g/400/300" width="5cm" />.

Diese Dateinamen können bei Bildern, bei XPath- und Layoutfunktionen sowie auf der Kommandozeile benutzt werden. So ist es möglich, den Publisher mit

sp --dummy --data https://raw.githubusercontent.com/speedata/examples/master/technical/rotating/layout.xml

aufzurufen. Erst wird die Ressource auf dem lokalen Rechner zwischengespeichert und dann von dort aus geladen.

Der Download der neuen Version wie immer unter https://download.speedata.de/.

von Patrick Gundlach |

Version 3.5.2

Die Version 3.5.2 (gestern frisch hochgeladen) hat neben diversen Bugfixes (hauptsächlich im Zuge des Upgrades auf LuaTeX 1.0.7) wieder Neuerungen erhalten.

break-below in Tabellen

Bisher gab es keine einfache Möglichkeit, das Verhalten break-below="no" in Tabellenzeilen mit Tabellenlinien zu verknüpfen. Seit der Version 3.5.2 wird das nun auch in Tabellenlinien beachtet, außerdem kann man nun in Tabellenlinien dieselbe Eigenschaft setzen.

<Layout
  xmlns="urn:speedata.de:2009/publisher/en"
  xmlns:sd="urn:speedata:2009/publisher/functions/en">
  <Pageformat height="5cm" width="7cm"/>
  <Trace grid="no" />

  <SetGrid height="12pt" nx="5" />

  <Pagetype name="foo" test="true()">
    <Margin left="1cm" right="1cm" top="1cm" bottom="1cm"/>
    <PositioningArea name="tbl">
      <PositioningFrame height="8" width="2" row="1" column="1"/>
      <PositioningFrame height="8" width="2" row="1" column="4"/>
    </PositioningArea>
  </Pagetype>

  <Record element="data">
    <PlaceObject area="tbl">
      <Table>
        <Loop select="10">
          <Tr break-below="no">
            <Td><Paragraph><Value>tablerow</Value></Paragraph></Td>
          </Tr>
          <Tablerule rulewidth="2pt" color="green"/>
        </Loop>
      </Table>
    </PlaceObject>
  </Record>

</Layout>

Ab sofort kann man steuern, ob Tabellenlinien unterhalb einer Zelle bleiben sollen, oder nicht. Tablerow beachtet nun das darüberliegende break-below='no'. Im rechten Fall ist die Tabellenlinie immer unterhalb der Zeile, ggf. wird ein Umbruch vorher eingefügt.

von Patrick Gundlach |

CID Keyed Fonts

Eine »Errungenschaft« der neuen LuaTeX-Version ist, dass sie nicht mehr bei CID-keyed Schriftdateien abstürzt.

Das hat in der Vergangenheit die Benutzung der Noto Sans verhindert, zumindest in der Ausführung, die man auf der Webseite herunterladen kann.

Ich wollte heute nur mal kurz die Schriftart testen, um festzustellen, dass die ganz anders aufgebaut ist, als normale CFF-basierte OpenType Fonts. Hier werden die Zeichen in einzelnen Kind-Schriftarten gekapselt, ähnlich wie bei .ttc, den TrueType Collections.

Insofern musste ich den Fontloader etwas anpassen, aber das Ergebnis ist wieder ein wichtiger (wenn auch kleiner) Schritt in Richtung Weltherrschaft.

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

  <LoadFontfile name="NSR" filename="NotoSansCJKsc-Regular.otf" />
  <DefineFontfamily name="text" fontsize="10" leading="12">
    <Regular fontface="NSR"/>
  </DefineFontfamily>

  <Record element="data">
    <PlaceObject>
      <Textblock>
        <Paragraph>
          <Value>NotoSansCJKsc-Regular 燉牛肉很好吃</Value>
        </Paragraph>
      </Textblock>
    </PlaceObject>
  </Record>

</Layout>

CID-Keyed Font Noto beinhaltet haufenweise Glyphen

Das wird in der Version 3.5.2 (und dann auch in der Version 3.6) enthalten sein.

von Patrick Gundlach |

Neue Version 3.4.0

Es gibt mal wieder eine neue »stabile« Version. Es stehen ein paar größere Änderungen im Publisher an1, daher friere ich den aktuellen Stand ein. Wer die Entwicklungsversionen verfolgt hat, wird keine Überraschungen feststellen. Hier ein paar Punkte, die sich seit der letzten stabilen Version im März getan haben. Nachzulesen natürlich auch im Changelog. Seit dem letzten Stabilen Release wurden 14 Entwicklerversionen erzeugt.

  • Update auf LuaTeX Version 1.0.7. Hier gibt es minimale visuelle Änderungen. Siehe auch den Beitrag über LuaTeX 1.0.4. Dort steht auch, was die nächsten Versionen bringen werden.
  • Hyperlinks innerhalb von Dokumenten.
  • Erweiterte Bookmarks
  • Textdrehungen in Tabellenzellen
  • Manuell gesteuerte Seitenumbrüche in Tabellen (<TableNewPage>)
  • Neue Lua-Runtime und Erweiterung des Lua-Filters für die Datenvorverarbeitung.
  • Natürlich etliche Fehlerkorrekturen. Ich bin immer wieder erstaunt, auf welche Spezialfälle die Benutzer treffen.

Die Version ist wie immer auf der Downloadseite zu finden: https://download.speedata.de/

von Patrick Gundlach |

Happy Birthday XML

XML ist 20 Jahre alt geworden. Foto: Steven Pemberton

Im Jahr 1998 wurde XML vom W3C veröffentlicht. Auf der letzten Balisage (Markup-Konferenz) ist dieses Foto entstanden. Zeit für ein kleines persönliches Resümee, da ich beruflich ja sehr intensiv mit XML zu tun habe.

von Patrick Gundlach |

Neue Preisstruktur

Nach gefühlten Ewigkeiten habe ich die Preise für den Support des Publishers geändert. Eines vorweg: eine Preiserhöhung hat es nicht gegeben, sondern nur eine Änderung der Pakete bzw. ein neues Paket ist hinzugekommen.

Doch besser der Reihe nach:

  1. Die Preise sind transparent und auf der Webseite zu sehen. Ich mag dieses »für Preise bitte anrufen« nicht, und ich denke, das trifft auf viele zu.

  2. Die OpenSource-Version wird immer kostenlos zu haben sein. Persönlichen Support kann ich natürlich nicht geben. Hilfe gibt es auf Stackoverflow, im Chat oder im Bugtracker. Hier schaue ich regelmäßig vorbei und beantworte, was ich kann, aber ohne Garantie. Noch ein Hinweis: die OpenSource-Version unterscheidet sich nur im Support von den anderen Versionen.

  3. Neu hinzugekommen ist die Kategorie »für Spontane«. Hier helfe ich gegen Bezahlung, aber ohne Abonnement. Und das auch nur per E-Mail, damit ich mir die Zeit besser einteilen kann.

  4. Die Kategorie »Standard« ist ähnlich wie bisher, enthält aber jeden Monat zwei Stunden Support (auch per Telefon).

  5. Die Kategorie »Professional« ist für die Poweruser, die auch für ältere Versionen des Publishers Unterstützung benötigen. Außerdem wird dadurch mehr als bei den anderen Paketen die Weiterentwicklung des Publishers ermöglicht (z.B. Handbuch).

  6. Daneben gibt es natürlich auch die Möglichkeit der persönlichen Absprache. Wer intensive Unterstützung haben möchte, kann bei Mindestabnahme von Support auch besondere Konditionen bekommen.

Jetzt bleibt natürlich die Hoffnung, dass das neue Preismodell auch mehr Firmen anspricht, die nur Kleinigkeiten fragen möchten. In der letzten Zeit (vermutlich auch durch das ausführliche Handbuch) sehe ich immer mehr eigenständige Nutzer des Publishers. Die stecken dann manchmal an einem Punkt fest und brauchen nur gelegentlich Hilfe.

Vielleicht ziehe ich in einem Jahr oder so mal ein Fazit und schreibe, ob alles so geklappt hat, wie ich mir das erhoffe.

von Patrick Gundlach |

Neue Lua-Runtime

Version 3.3.10 wird eine neue Lua-Runtime für die Daten-Vorverarbeitung (siehe Lua-Filter im Handbuch). Der Anwender sollte hiervon eigentlich nichts merken, bis auf ein paar Änderungen, die ich im gleichen Atemzug durchgeführt habe:

  • Die Bibliotheken müssen mit require() geladen werden.
xml = require("xml")
tbl = {
    ["_type"] = "element",
    ["_name"] = "data",
    {
       ["_type"] = "element",
       ["_name"] = "child",
       "Hallo Welt",
    }
}


ok, msg = xml.encode_table(tbl)
if not ok then
    print(msg)
    os.exit(-1)
end
  • Es wird nur Lua Version 5.1 unterstützt, nicht wie bisher 5.2
  • Dafür werden auch die Lua-Patterns unterstützt (z.B. string.gsub())
  • Die CSV-Bibliothek hat andere Rückgabewerte
von Patrick Gundlach |

Hyperlinks innerhalb eines Dokuments

Eine kleine Neuerung hat die Version 3.3.8 des Publishers gebracht, die ich kurz erwähnen möchte. Ab sofort kann man Hyperlinks innerhalb eines Dokuments erstellen1. Der Code dafür ist sehr einfach:

von Patrick Gundlach |