Donnerstag, 4. Dezember 2014

Schlechte Darstellung bei elektronischen Kontoauszügen der Raiffeisenbanken unter Linux umgehen

Vor Kurzem hat meine Bank ihre Kontomodelle umgestellt und so erhalte ich nun meine Kontoauszüge im Online-Banking-Portal als PDF-Dateien. Mit den PDF-Betrachtern unter Linux ‒ genauer gesagt mit auf Poppler basierenden wie Evince und Okular (also quasi alle standardmäßig verwendeten) ‒ hat man mit den erhaltenen Dateien jedoch mit Darstellungsproblemen zu kämpfen (am Bildschirm und beim Ausdrucken). Ursache scheint die Verwendung einer Schriftart RFont zu sein, die nicht in die PDF-Datei eingebettet ist:

$ pdffonts Kontoauszug.pdf 
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
RFont0                               TrueType          no  no  no       6  0
RFont1                               TrueType          no  no  no      10  0
RFont2                               TrueType          no  no  no      13  0
RFont3,Bold                          TrueType          no  no  no      16  0
RFont4,Bold                          TrueType          no  no  no      19  0
RFont5                               TrueType          no  no  no      22  0
RFont6                               TrueType          no  no  no      25  0
AAAAAB+ArialMT                       TrueType          yes yes no      28  0
AAAAAB+Arial-BoldMT                  TrueType          yes yes no      39  0
RFont7                               TrueType          no  no  no      36  0

Bei der Darstellung wählt ein PDF-Betrachter dann, sofern die Schriftart wie in diesem Fall lokal nicht installiert ist, eine Ersatzschriftart aus. Dadurch kann es passieren, dass die Buchstaben in einem viel zu großen oder zu kleinen Abstand voneinander erscheinen, wenn die Schriftmaße nicht exakt gleich sind, und die gute Lesbarkeit stark beeinträchtigt wird:



Das Problem könnte vermieden werden, wenn die Schriftart eingebettet wäre oder eine gängige, auf allen Systemen vorhandene (bzw. leicht zu installierende) Schriftart verwendet würde. Da seitens des für das Online-Banking zuständigen Dienstleisters Fiducia "kein Handlungsbedarf" gesehen wird (es hat sich wegen des Problems bisher noch kein weiterer Kunde dort gemeldet), möchte ich hier für die Weiten des Internets dokumentieren, wie man als betroffener Kunde das Problem selbst umgehen kann. Wer ebenso betroffen ist, kann sich ja auch mal bei seiner Bank beschweren...

Nachtrag/Einschub 2016-01-30: Wie im untenstehenden Kommentar von Olaf Seyfarth beschrieben, werden die PDF-Dokumente (einzig) mit MuPDF (bei Debian das Paket mupdf) gut angezeigt. Der wohl kürzeste Umweg zu einem korrekten Schriftbild für Ausdrucke besteht darin, den Kontoauszug über MuPDF in Rastergraphiken umzuwandeln (der MuPDF-Betrachter hat keine Druckfunktion). Hierzu sind für ein Debian-basiertes Linux-System die Pakete mupdf-tools und imagemagick notwendig. Anschließend kann ein Skript der folgenden Art zur Umwandlung in ein PDF bestehend aus korrekt dargestellten Rastergraphiken verwendet werden:

#!/bin/bash
set -o errexit
set -o nounset
#set -o xtrace

if [ $# != 2 ]; then
echo "Usage: $0 in.pdf out.pdf"
exit 2
fi

IN="$1"
OUT="$2"
RESOLUTION_DPI=400
TMP_PREFIX=$(mktemp)

mudraw -o ${TMP_PREFIX}.%d.png -r${RESOLUTION_DPI} "$IN"
convert ${TMP_PREFIX}.*.png "$OUT"
rm -f ${TMP_PREFIX}.*.png

[Nachtrag 2014-12-28: Die Begründung von Fiducia dafür, keine Schriftarten einzubetten, ist, dass man alle möglichen Maßnahmen ergreifen wolle, die entstehenden Datenvolumina bei der Verarbeitung zu verringern.]

Die Schriftersetzung kann über die fontconfig-Konfigurationsdatei gesteuert werden (Poppler berücksichtigt diese Einstellungen). Die benutzerspezifische XML-Konfigurationsdatei ist hierbei normalerweise unter dem Pfad ~/.fonts.conf zu finden (siehe dazu auch den Artikel zu den Schriftarteneinstellungen im ArchLinux-Wiki) und muss für das Ersetzen der Schriftarten RFont0-7 um folgende Einträge erweitert werden:

 <!-- ... -->
 <alias>
  <family>RFont0</family>
  <prefer><family>Courier New</family></prefer>
 </alias>
 <alias>
  <family>RFont1</family>
  <prefer><family>Courier New</family></prefer>
 </alias>
 <alias>
  <family>RFont2</family>
  <prefer><family>Nimbus Sans L</family></prefer>
 </alias>
 <alias>
  <family>RFont3</family>
  <prefer><family>Courier New</family></prefer>
 </alias>
 <alias>
  <family>RFont4</family>
  <prefer><family>Courier New</family></prefer>
 </alias>
 <alias>
  <family>RFont5</family>
  <prefer><family>Nimbus Sans L</family></prefer>
 </alias>
 <alias>
  <family>RFont6</family>
  <prefer><family>Nimbus Sans L</family></prefer>
 </alias>
 <alias>
  <family>RFont7</family>
  <prefer><family>Courier New</family></prefer>
 </alias>
 <alias>
  <family>RFont8</family>
  <prefer><family>Nimbus Sans L</family></prefer>
 </alias>
 <!-- ... -->

Nun wird die Schriftart RFont durch Courier New und Nimbus Sans L ersetzt. Wichtig ist hierbei natürlich, dass das "Drumherum" der XML-Datei nicht vergessen wird, falls man die Datei selbst neu anlegt. Statt Nimbus Sans L und Courier New könnte beispielsweise auch Arial und Liberation Mono verwendet werden. Öffnet man den PDF-Kontoauszug nun erneut, erhält man ein korrektes Schriftbild:


Nachtrag 2014-12-20: Um Schriftarten unter Berücksichtigung der Fontconfig-Einstellungen in ein PDF-Dokument einzubetten, können pdftocairo oder embed-pdf-fonts verwendet werden:

    pdftocairo -pdf input.pdf output.pdf
    embed-pdf-fonts input.pdf output.pdf

Nachtrag 2014-12-28: Die Unkenntlichmachung der Kontoauszüge wurde zu schwarzen Balken geändert, da das vorher verwendete Mosaikfilter die Rückgewinnung der Daten nicht vollständig ausschließt, siehe dazu "Recovering Censored Text Using Photoshop and JavaScript". Außerdem ist das Problem mit diesen PDF-Dateien über die korrekte Anzeige unter Linux und die verwendete (ggf. nicht eingebettete) Schriftart hinaus zu betrachten. So könnte grundsätzlich auch Microsoft in ein paar Jahren andere Standardschriftarten mitliefern. Es gibt für die Langzeitarchivierung von Dokumenten anerkannte Standards wie PDF/A (anstatt PDF in beliebiger Version mit beliebigen Parametern), die an dieser Stelle Verwendung finden sollten. (Vielen Dank an Hans für die beiden Anregungen!)

Im Übrigen: Wer hierher über die Suchmaschine seiner Wahl gelangt, möge sich ebenso bei seiner Bank beklagen, auf dass sich die Fiducia zu einer Verbesserung bewegen lasse. ;-)

Nachtrag 2015-01-02: Leider muss die Fontconfig-Datei ggf. von Dokument zu Dokument geändert werden. Scheinbar stellen die als RFontX bezeichneten Schriften in der PDF-Datei gelegentlich je nach Dokument unterschiedlichen Schriftarten, was das Problem noch ärgerlicher macht, als es ohnehin schon ist. :-(

Nachtrag 2015-02-17: Die korrekte Entsprechung der RFont-Schriftarten variiert leider auch noch von Datei zu Datei, was lästiger Weise das wiederholte Raten und Anpassen für die Darstellung notwendig macht: Welche der nummerierten RFont-Schriften gehört zum fehlerhaft angezeigten Textbereich? Diese muss dann von der Festbreiten- auf die Proportionalschriftart umgeändert werden?

Kommentare:

  1. Vielen Dank für die Nachfrage bei Ihrer Bank und bei Fiducia sowie für den Artikel und die Nachträge - ich habe seit meinem Umstieg auf Linux das selbe Problem und werde mich zumindest bei meiner Bank beschweren.

    AntwortenLöschen
  2. Da das nichts gebracht hat, hier ein Workaround: MuPDF zeigt die Kontoauszüge korrekt an! Wenn die Anzeige reicht, genügt es also mupdf zu installieren.

    Falls man es auf Papier braucht: Ich rendere die Kontoauszüge mit mudraw als PNG und fasse diese mit imagemagick zu einem PDF zusammen (da ich das leichter ausdrucken kann als mehrere PNGs). Nach dem Druck lösche ich das temporäre (Bitmap-)PDF.

    Mein Shell-Skript (z.B. in ~/.bin/Kontoauszug-Druck-PDF-erzeugen.sh)

    #!/bin/bash

    if [ ! $# == 1 ]; then
    echo "Erwarte Parameter KONTOAUSZUG.pdf"
    exit
    fi

    mudraw -o tempfile_KtoA_%d.png -r300 "$@"
    convert tempfile_KtoA_*.png "$@".BITMAP.pdf
    rm tempfile_KtoA_*.png

    AntwortenLöschen
  3. Hallo Fiducia-geplagte, ich nutze Ubuntu 14.04 und habe eben auch überlegt, dass die pdf-Kontoauszüge eigentlich schlecht zu lesen sind und bin dann hier auf die Seite gekommen. Mit den pdf-Betrachtern, die in Firefox und Chromium eingebaut sind, sind die Schriften okay. Allerdings sehe ich (mit keinem der Betrachter) Umlaute.
    Mal sehen, vielleicht schreibe ich ne Mail an die Bank und beschwere mich. Es wäre ja sogar besser, einfach eine CSV- oder HTML-Seite zu machen, die ich mir als PDF drucken kann, anstatt so ein verkrüppeltes PDF zu downloaden.
    Grüße und schönen Feiertag!
    Tom

    AntwortenLöschen
  4. Kürzlich erreichte mich hierzu auch noch folgende Einsendung:

    „Hallo Herr Fiedler,

    ich hatte mich selbst anlässlich einer Kontoeröffnung mit dem Postident-Verfahren über die grausliche Anzeigequalität heruntergeladener PDF - Dateien geärgert.

    Als weiteren Workaround hatte ich ihrer Anregung im Blog mit MUPDF folgend noch zwei andere Alternativen gefunden:

    - man lässt das heruntergeladene PDF durch pdftk laufen, also ganz einfach

    pdftk heruntergeladen.pdf output besseres.pdf

    Das nutzt die Reparaturfunktion von pdftk. Ergebnis ist noch nicht perfekt, aber im Ausdruck deutlich besser als vorher.

    - oder man installiert kdegraphics3-pdf, also das alte kpdf aus KDE3.

    Damit die heruntergeladene Datei öffnen und normal drucken, Ergebnis vergleichbar wie die erste Alternative.

    Wahrscheinlich hebeln beide Alternativen die Arbeit von fontconfig aus, weswegen die Resultate merkbar besser werden. Idealerweise könnte man sich vielleicht die Fonts von Fiducia besorgen und installieren, aber wo man die wieder her bekommem kann, weiß der Himmel.“

    AntwortenLöschen
  5. Hallo!
    Ich hatte wegen diesem Problem Oktober bis Dezember 2015 ein battle mit meiner RAIBA und Fiducia.
    Fiducia direkt zu kontaktieren war fast nicht möglich - die Telefonzentrale hat sie geweigert mich zu einem Zuständigen durchzustellen. Hat dann nur durch Zufall geklappt. Die sitzen auf einem hohen Roß und haben einfach keine Lust sich damit zu beschäftigen.
    Ich zitiere den letzten Satz einer Fiducia Mail an mich:
    "Da sich die Größe des PDF beim Einbetten aller Schriftarten mehr als verdoppelt, wird die Anforderung nicht umgesetzt."
    In Zeiten von Flatrates aller Orten ist das ein Witz, ausserdem ist der Kontoauszug der ING-Diba schon immer unter Linux problemlos zu öffnen und drucken gewesen bei ca 28kb Dateigröße (mein Fiducia Auszug hat ca.63kb...).

    Sei's drum, Dein bash-Script oben ist der erste Workaround der bei mir funktioniert!! Vielen Dank dafür!

    Gruß, Markus

    AntwortenLöschen