2019.06 2020.06

XSL-FO

Es wir die Integration eines XSL-FO-Formatters beschrieben.

XSL-FO

Um ab LTS 2019-06 die Erweiterungen zu XSL:FO verwenden, muss die mycore-fo-Komponente in den dependencies eingetragen werden. Für LTS 2018-06 ist dies noch in der mycore-base -Komponente verankert.

1
2
3
4
5
<dependency>
  <groupId>org.mycore</groupId>
  <artifactId>mycore-fo</artifactId>
  <version>${mycore.version}</version>
</dependency>

Mit der Komponente wird das Property MCR.Layout.Transformer.Factory auf org.mycore.component.fo.common.content.xml.MCRLayoutTransformerFoFactory gesetzt.

Im LayoutService von MyCoRe ist es neben der Umsetzung von XML-Dateien via XSLT und dem Durchreichen von Daten auch möglich einen XSL:FO-Formatter anzusprechen. Dazu muss das eingehende XML den Content-Type "application/pdf" haben. Dann wird ein Spezialzweig angefaßt, bei dem eine spezielle Java-Klasse aufgerufen wird, die org.mycore.common.fo.MCRFoFormatterInterface implementiert. Im MyCoRe-Kern ist dies eine Klasse, welche den FOP aufruft und das Ergebnis ausliefert. Dazu muss dann eine anwenungspeziefische Klasse implementiert werden, die den gewünschten XSL:FO-Formatter (z.B. Antenna House) aufruft. Konfiguriert wird dies über:

1
2
3
4
5
6
7
8
##############################################################################
# XSL-FO Formatter
##############################################################################

  # Class that implements MCRFoFormatterInterface
  MCR.LayoutService.FoFormatter.class=org.mycore.common.fo.MCRFoFormatterFOP
  # Configuration file for FOP in classpath
  MCR.LayoutService.FoFormatter.FOP.config=myConfigFile

Für FOP kann noch eine Konfigurationsdatei im Classpath angegeben werden, die z. B. andere Fonts einsetzt.