Ich habe eine XML-Datei in utf-8 mit einem Codierungsattribut.
Wenn ich fop -xml xml.xml -xsl xsl.xsl -pdf pdf.pdf
ausführe, hat meine Ausgabe-PDF utf-8 Zeichen. Was wichtig ist, der Text aus der xsl-Datei ist ohne utf-8 Zeichen, genauso wie der Text aus xml.
Utf-8 Zeichen werden durch # ersetzt.
Was könnte falsch sein?
Xsl-Datei:
%Vor%XML-Datei:
Wenn FOP Zeichen als #
ausgibt, enthält die ausgewählte Schriftart keine Glyphe, um sie darzustellen.
Dies liegt vermutlich daran, dass Ihre XML-Eingabedatei Zeilen wie folgt enthält:
%Vor% Das problematische Zeichen ist hier ł
.
Also, um Ihre Frage zu beantworten: FOP unterstützt UTF-8, es ist nur so, dass die Schriftart (in Ihrem Fall: font-family='Calibri'
) keine Möglichkeit hat, die Zeichen darzustellen.
Wenn dies tatsächlich der Fall ist, sollte FOP eine Warnung in der Art von
ausgeben %Vor%Um nun auch diejenigen Zeichen zu berücksichtigen, die nicht in der von Ihnen gewählten Schriftart vorhanden sind, ändern Sie entweder die Ausgabeschriftart vollständig oder isolieren sie als Workaround mit Inlines.
So stellen Sie beispielsweise sicher, dass für das Zeichen Σ
(ein mathematischer Operator) die richtige Schriftart ausgewählt ist:
Auf dieser Seite finden Sie weitere Informationen zu Fonts mit FOP: Ссылка .
Die Lösung könnte viel einfacher sein. In unserem Fall haben wir Warnungen für fehlende Glyphen erhalten, lesen Sie die FOP-Fontkonfigurations-Webseite und fügen Sie einfach
hinzuencoding-mode="Einzelbyte"
zur Calibri-Schriftartdefinition, um die vollständige Schriftart einzubetten. Dies löste das Problem für uns (mit FOP 2.0).