Allgemeine Einordnung
Permalink "Allgemeine Einordnung"Unter Verwendung des sogenannten Apache Formatting Objects Processors (FOP) lässt sich auf der Grundlage von spezifischen XSL-FO-Layout-Beschreibungen insbesondere das Ausgabeformat PDF erzeugen. Als freie Java-Anwendung zur Verfügung gestellt wird Apache-FOP von der ehrenamtlich zur Förderung von Apache-Software-Projekten arbeitenden Organisation Apache Software Foundation. Eine allgemeine Einführung sowie eine umfassende Dokumentation zur Syntax von XSL-FO-Dateien auf Deutsch bietet die data2type GmbH.
Der Einsatz von Apache-FOP zur Erzeugung von PDF-Dokumenten, die den Test mit dem Prüftool PDF Accessibility Checker 2021 (PAC) der PDF/UA Foundation vollständig bestehen, ist insbesondere dann empfehlenswert, wenn die dazu benötigte XSL-FO Preview automatisiert aus einem XML-Dokument generiert werden kann. In diesem Fall können mithilfe von XSL-Transformationen alle benötigten Voreinstellungen eingerichtet und ohne weiteren Anpassungsbedarf für gleichartige PDF-Dokumente genutzt werden. Dazu werden insbesondere die im Folgenden beschriebenen Einstellungen benötigt.
Grundlegendes
Permalink "Grundlegendes"Dokumententitel
Permalink "Dokumententitel"Die Einstellung des Dokumententitels erfolgt in den fo:declarations
:
1 <fo:declarations>
2 <x:xmpmeta xmlns:x="adobe:ns:meta/">
3 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
4 <rdf:Description rdf:about="">
5 <dc:title>
6 <rdf:Alt>
7 <rdf:li xml:lang="x-default">Dokumententitel</rdf:li>
8 </rdf:Alt>
9 </dc:title>
10 </rdf:Description>
11 </rdf:RDF>
12 </x:xmpmeta>
13 </fo:declarations>
Anmerkungen
Permalink "Anmerkungen"D. h. die Dokumentation unter https://xmlgraphics.apache.org/fop/2.9/accessibility.html ist diesbezüglich nicht ganz vollständig.
In den fo:declarations
könnten weitere Angaben eingetragen werden, wie z. B. zur Dokumentensprache oder zu „creator“ auch oder zu „description“ wie in der Apache-FOP Referenz ausgewiesen.
Allerdings kann es dann bei Verwendung des PDF/A-Standards für die Langzeitarchivierung zu Problemen beim Test mit dem Tool veraPDF kommen (siehe auch unter Prüfung des Dokuments).
Dokumentensprache
Permalink "Dokumentensprache"Die Einstellung der Dokumentensprache kann direkt im fo:root
-Element vorgenommen werden:
1<fo:root language="DE" country="DE">
Alternativtexte
Permalink "Alternativtexte"Den Elementen fo:external-graphic
sowie fo:basic-link
muss mittels fox:alt-text
-Attribut ein Alternativtext zugewiesen werden.
Anmerkungen
Permalink "Anmerkungen"Für die Transformation mit Apache-FOP muss tatsächlich für alle fo:external-graphic
- sowie fo:basic-link
-Elemente ein Alternativtext bereitgestellt werden.
D. h. insbesondere auch dann, wenn sich die Elemente in einem Bereich befinden, der als sogenanntes „Artifact“ gekennzeichnet ist (siehe auch unten unter Kopf- und Fußzeilen).
Die Prüfung auf Vorhandensein von Alternativtexten und die Kennzeichnung als Artifact erfolgen unabhängig voneinander.
Feature Accessibility
Permalink "Feature Accessibility"Das Feature Accessibility muss in der Konfiguration eingetragen werden:
1 <accessibility>true</accessibility>
2 <renderers>
3 <renderer mime="application/pdf">
4 <pdf-ua-mode>PDF/UA-1</pdf-ua-mode>
5 </renderer>
6 </renderers>
Anmerkungen
Permalink "Anmerkungen"Einige im Programmcode bereitgestellten Bestandteile (wie insbesondere Alternativtexte) werden erst mit dieser Einstellung bei der Transformation in das PDF-Dokument übertragen. Darüber hinaus werden mit dieser Einstellung bei der Transformation konkrete Fehlermeldungen erzeugt, die zur weiteren Optimierung genutzt werden können.
Dokumentenstruktur
Permalink "Dokumentenstruktur"Apache-FOP sorgt mit eingeschaltetem Feature Accessibility automatisch für das Tagging der einzelnen Elemente. Insbesondere bei komplexem Design wird an einigen Stellen manuell nachgebessert werden müssen.
Gezielt an diesen Stellen lässt sich das role
-Attribut einsetzen, um den betroffenen Elementen eine passende Rolle zuzuweisen.
Lesezeichen
Permalink "Lesezeichen"Lesezeichen lassen sich mittels fo:bookmark-tree
-Element einfügen, siehe:
Kopf- und Fußzeilen
Permalink "Kopf- und Fußzeilen"Kopf- sowie Fußzeilen lassen sich mithilfe von fo:static-content
-Elementen umsetzen.
Wenn es sich dabei um Design- bzw. „Schmuckelemente“ ohne relevante Inhalte handelt, sollten diese Elemente als sogenanntes „Artifact“ gekennzeichnet werden (siehe auch Ziemer, 2023a, S.7).
Dazu werden die betroffenen fo:static-content
-Elemente folgendermaßen mittels role
-Attribut ausgezeichnet:
1<fo:static-content flow-name="header" role="artifact">
Anmerkungen
Permalink "Anmerkungen"Die Kennzeichnung als Artifact wird insbesondere bei fo:static-content
- sowie fo:wrapper
-Elementen übertragen.
Dabei die Kleinschreibung beachten – insbesondere im Unterschied zur Schreibweise mit einem Großbuchstaben in allen anderen Fällen.
Erzeugung des PDF-Dokuments
Permalink "Erzeugung des PDF-Dokuments"Die Transformation kann z. B. mithilfe des Oxygen XML Editor ausgeführt werden.
Ein möglicher Aufruf im Linux-Terminal (unter Verwendung geeigneter Pfadangaben) könnte folgendermaßen aussehen, wobei die Datei in.xml alle benötigten XSL-FO-Auszeichnungen enthält und die Datei out.pdf die Ausgabedatei im Ausgabeformat PDF darstellt:
1docker run --user $(id -u):$(id -g) -v $(pwd):/src -w /src -it --rm chrwahl/fop -c fop_cfg.xml in/in.xml -pdf out/out.pdf
Bei der Datei fop_cfg.xml handelt es sich um die entsprechend eingerichtete Konfigurationsdatei.
Der Programmierung eines automatisierten Workflows – ausgehend von einem Ausgangs-XML-Dokument, das ggf. aus einer Word-Datei extrahiert wird, über ein XML-Dokument, das alle benötigten XSL-FO-Auszeichnungen enthält, bis hin zum Ausgabeformat PDF – sind dabei keine Grenzen gesetzt.
Prüfung des Dokuments
Permalink "Prüfung des Dokuments"Das PDF-Dokument sollte bereits während des Erzeugungsprozesses sowie abschließend mit dem PDF Accessibility Checker (PAC) der PDF/UA Foundation getestet werden. axes4 bietet eine webbasierte Version von PAC, die entsprechend nicht nur unter Windows nutzbar ist.
Da die Nutzbarkeit mit einem starken Vergrößerungsfaktor für Menschen mit Sehbeeinträchtigung entscheidend ist, sollte bei der Prüfung eines PDF-Dokuments außerdem testweise ein Vergrößerungsfaktor von z. B. 300% eingestellt werden. Insbesondere im Zusammenhang mit der Nutzung des PDF/A-Standards (zusätzlich zu PDF/UA) ließ sich diesbezüglich eine fatale Auswirkung auf den Auslösebereich bei internen Verlinkungen beobachten: ein Schrumpfen auf die obere linke Ecke (siehe auch Ziemer, 2023a, S.7).
Einstellung der Nutzung des PDF/A-Standards zusätzlich zu PDF/UA in der FOP-Konfiguration:
1 <accessibility>true</accessibility>
2 <renderers>
3 <renderer mime="application/pdf">
4 <pdf-ua-mode>PDF/UA-1</pdf-ua-mode>
5 <pdf-a-mode>PDF/A-1a</pdf-a-mode>
6 </renderer>
7 </renderers>
Um sich die unterschiedlichen Stärken einzelner Tools zunutze zu machen, ist es darüber hinaus generell empfehlenswert, mehrere Tools zur Begutachtung hinzuzuziehen. Vergleiche dazu auch den Abschnitt Tools .
Anmerkungen
Permalink "Anmerkungen"Die besten Ergebnisse hinsichtlich des PDF/A-Standards konnten ohne weitere Deklaration der Version erzielt werden. Informationen zu den bislang in Apache-FOP implementierten Versionen liefert die Dokumentation unter:
Spezialfälle
Permalink "Spezialfälle"Ligaturen
Permalink "Ligaturen"Mit einer Ligatur für z. B. die Kombination aus dem Großbuchstaben T mit einem direkt darauf in Kleinschreibung folgenden Buchstaben h soll ein gefälliges Erscheinungsbild im Schriftsatz sichergestellt werden. Der senkrechte Strich im kleingeschriebenen Buchstaben h soll dabei insbesondere nicht über den Querbalken des Großbuchstaben T hinausragen. Ziel ist eine Verbesserung der Lesbarkeit des visuellen Erscheinungsbildes.
Die Zeichencodierung von Ligaturen ist jedoch in vielen Schriftarten oftmals nicht eindeutig. Dies hat zur Folge, dass die betroffene Ligatur von einem Screenreader nicht korrekt ausgelesen werden kann: Die in dieser Ligatur zusammengefassten Buchstaben werden in einem solchen Fall übersprungen und das Wort wird unverständlich.
Visuell lassen sich die Fehlerquellen in einer geeigneten Screenreader-Vorschau (z. B. callas) aufspüren. Oder aber indem man den Text aus dem in Adobe Acrobat geöffneten PDF-Dokument herauskopiert und in einen Windows-Editor einfügt. In der Screenreader-Vorschau von callas und auch im Windows-Editor erscheinen Zeichen mit uneindeutiger Codierung in Form eines „Kästchens“. Im Prüftool PAC führt das Vorkommen von Zeichen, deren Codierung sich nicht eindeutig zuordnen lässt, (derzeit) nicht zu einem Fehler.
Anmerkungen
Permalink "Anmerkungen"Einen möglichen Lösungsansatz bietet in diesem Fall der Einsatz des geschützten Leerzeichens ohne eigene Breite (-
) als Bindehemmer.
Unter Verwendung der 14 Basis Fonts von Adobe konnte diese Problematik bislang nicht beobachtet werden.
Silbentrennung
Permalink "Silbentrennung"Bei der Transformation mit Apache-FOP kann eine automatische Silbentrennung verwendet werden. Alternativ könnten auch manuell bedingte Trennzeichen eingefügt werden. Bei der Kombination einer Schriftart, die nicht den 14 Basis Fonts entspricht, mit (automatischer bzw. manueller) Silbentrennung und dem Feature Accessibility konnte folgendes Phänomen beobachtet werden: Beim Herauskopieren von Text aus dem in Adobe Acrobat geöffneten PDF-Dokument in einen Windows-Editor kam es bei allen Zeilen, die mit einer Silbentrennung enden, zu zahlreichen Doppelungen. Beim Herauskopieren in ein Microsoft-Programm wie Word sowie beim Herauskopieren aus dem in einem Browser geöffneten PDF-Dokument in einen Windows-Editor kam es nicht zu Doppelungen.
Anmerkungen
Permalink "Anmerkungen"Einen möglichen Lösungsansatz bietet in diesem Fall der Einsatz eines speziellen Schutzes für das bedingte Trennzeichen gemeinsam mit den beiden umgebenden Buchstaben innerhalb eines separaten inline-Elements.
Verwendung von fo:inline-container
-Elementen
Permalink "Verwendung von fo:inline-container
-Elementen"Ein fo:inline-container
-Element wird nicht in Form einer separaten Ebene in den Strukturbaum übernommen.
Es scheint vielmehr ein Feature zu sein, dass fo:inline-container
-Elemente durch einen leeren Bereich voneinander abgesetzt werden.
Einzelne Strukturelemente
Permalink "Einzelne Strukturelemente"Annotation-Tag
Permalink "Annotation-Tag"Um ein Annotation-Element zu erzeugen, genügt die folgende Auszeichnung:
role="Annot"
Ein Annotation-Element benötigt zwingend einen Alternativtext.
Apache-FOP überträgt die Angaben für das fox:alt-text
-Attribut (derzeit) nicht in einem fo:block
-Element und auch nicht in fo:wrapper
-Elementen.
Anmerkungen
Permalink "Anmerkungen"Einen möglichen Lösungsansatz bietet in diesem Fall die Verwendung eines fo:basic-link
-Elements mit einem nicht-existierenden Ziel.
Bei der Transformation mit Apache-FOP wird eine entsprechende Warnung angezeigt werden, die man in Kauf nimmt, um den Alternativtext übertragen zu können.
Im folgenden Beispiel wird das Annotation-Element genutzt, um eine formatierte Zahlenangabe mit Maßangabe mit einem geeigneten Alternativtext zu versehen.
1<fo:basic-link role="Annot" internal-destination="Null" fox:alt-text="1234 Quadratmeter">1 234 m²</fo:basic-link>
Umsetzung im Screenreader
Permalink "Umsetzung im Screenreader"Mit VoiceOver wird bei einem Annotation-Element das gelesen, was im PDF-Dokument sichtbar ist. NVDA liest bei einem Annotation-Element den Alternativtext.
Darstellung in der Screenreader-Vorschau von PAC
Permalink "Darstellung in der Screenreader-Vorschau von PAC"In der Screenreader-Vorschau von PAC erscheint ein Annotation-Element innerhalb eines regulären P-Tags wie ein Span-Inline-Element. Angezeigt wird der im PDF-Dokument dargestellte Text. Der zugehörige Alternativtext ist nicht ersichtlich.
Formula-Tag
Permalink "Formula-Tag"Um ein Formula-Element zu erzeugen, genügt die folgende Auszeichnung:
role="Formula"
Ein Formula-Element benötigt ebenfalls zwingend einen Alternativtext.
Anmerkungen
Permalink "Anmerkungen"Ein möglicher Lösungsansatz wurde für das Annotation-Element beschrieben.
Umsetzung im Screenreader
Permalink "Umsetzung im Screenreader"VoiceOver wird ein Formula-Element als Bild gekennzeichnet, gelesen wird der Alternativtext.
NVDA liest den Alternativtext zu einem Formula-Element ggf. nur nach manueller Bearbeitung beispielsweise mit Adobe Acrobat Pro vor.
Dafür muss insbesondere ein Eintrag im Feld “Originaltext” vorgenommen werden.
Die Übertragung eines Eintrags für Originaltext bei der Transformation mit Apache-FOP ist bislang nicht gelungen.
Getestet wurde u. a. das fox:actual
-Attribut:
fox:actual="Originaltext"
Darstellung in der Screenreader-Vorschau von PAC
Permalink "Darstellung in der Screenreader-Vorschau von PAC"Die Screenreader-Vorschau von PAC zeigt ein unbearbeitetes Formula-Element als (leeres) Bild mit zugehörigem Alternativtext. Der im PDF-Dokument dargestellte Text ist nicht ersichtlich. Ein bearbeitetes Formula-Element erscheint als reguläres P-Tag ohne weitere Kennzeichnung. Angezeigt wird der zugehörige Originaltext. Weder der zugehörige Alternativtext, noch der im PDF-Dokument dargestellte Text sind ersichtlich.
Note-Tag
Permalink "Note-Tag"Ein fo:footnote
-Element wird von Apache-FOP automatisch als Note-Element getaggt.
Ein Note-Element benötigt zwingend eine id.
Die Übertragung eines entsprechenden Eintrags für ein fo:footnote
-Element bei der Transformation mit Apache-FOP ist bislang nicht gelungen.
Anmerkungen
Permalink "Anmerkungen"Ein möglicher Lösungsansatz, um die Funktionalität von Fußnoten dennoch nutzen zu können, besteht darin, das fo:footnote
-Element zu kaschieren, und zwar beispielsweise folgendermaßen:
1<fo:footnote role="Span">
Eine interne Verlinkung mit dem Alternativtext “intern zu Fußnote” sowie der zugehörigen Fußnotenziffer soll weitere Orientierungshilfe bieten (siehe dazu auch den Hinweis im direkt folgenden Abschnitt).
Umsetzung im Screenreader
Permalink "Umsetzung im Screenreader"NVDA liest den Fußnotentext bei einer mit Apache-FOP erzeugten Fußnote direkt im Anschluss an die zugehörige Fußnotenziffer vor. Es ist daher dringend ratsam, Fußnoten nur dann innerhalb eines Satzes zu platzieren, wenn der Einschub den Kontext nicht zerreißt. Dass dieser Abschnitt im PDF-Dokument als Fußnote umgesetzt ist, wird lediglich über einen entsprechenden Hinweis bei einer zugehörigen internen Verlinkung gekennzeichnet.
Weiterführende Literatur
Permalink "Weiterführende Literatur"- Anja Ziemer. (2023a). Ruckzuck für alle: Barrierefreie PDF-Dokumente automatisiert erstellt am Beispiel der MAK Collection, ZB MED. o-bib. Das offene Bibliotheksjournal / Herausgeber VDB, 8(4), 1–12. https://doi.org/10.5282/o-bib/5978
- Präsentationsfolien zum Vortrag bei der 111. BiblioCon im barrierefreien PDF-Format
Anja Ziemer. (2023b). 111.BiblioCon2023 – Ruckzuck für alle: Barrierefreie PDFs automatisiert erstellt am Beispiel der MAK Collection - Dokumentation zum Feature Accessibility von Apache-FOP
The Apache Software Foundation. (2023a). The Apache™ FOP Project. Apache™ FOP: Accessibility - Dokumentation zur Konfiguration von Apache-FOP
The Apache Software Foundation. (2023b). The Apache™ FOP Project. Apache™ FOP: Configuration - XSL-FO Einführung der data2type GmbH
data2type GmbH. (o. J.). Übersicht zu XSL-FO
Informationen zu diesem Artikel
Gerne können Sie uns Feedback per E-Mail zu unserer Handreichung senden!