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?

Samstag, 5. April 2014

LibreOffice/OpenOffice: Seitenzahl bei einseitigem Dokument ausblenden

Heute habe ich eine Anfrage erhalten, wie man es erreicht, dass die Fußzeile bzw. die Seitenzahl darin in einem Dokument nur angezeigt wird, wenn das Dokument mehrere Seiten hat. Bei einer einzigen Seite soll sie verborgen bleiben. Die Anfrage bezog sich auf meine Briefvorlagen, die dies so machen. Zur Archivierung hier der Weg, dieses Verhalten zu erreichen:

Das Ganze funktioniert über sogenannte Bereiche, welche man unter vorgegebenen Bedingungen ausblenden kann. Um einen solchen einzufügen, geht man im Menü auf "Einfügen > Bereiche..." und setzt dann im Reiter "Bereich" den Haken bei "Ausblenden". Als Bedingung für "die Anzahl Seiten beträgt 1" dient "page == 1". Daraufhin auf "Einfügen" klicken. Unter "Format > Bereiche..." können die erstellten Bereiche dann nachträglich noch geändert werden.

Freitag, 28. Februar 2014

Lebenslauf-Vorlage für LibreOffice/OpenOffice

Vor Kurzem habe ich eine weitere Vorlage für LibreOffice/OpenOffice erstellt. Es handelt sich dabei um eine Lebenslauf-Vorlage in Anlehnung an das LaTeX-Paket moderncv (genauer: den darin enthaltenen "casual"-Stil). Anlass war, dass mein aktuelles LaTeX-Lebenslaufdokument sich nicht mehr problemlos mit der in der aktuellen Debian-Version "Wheezy" enthaltenen Version des Pakets verträgt. Nebenbei ist es mit OpenOffice natürlich auch etwas einfacher und schneller möglich, kleine Änderungen am Aussehen des Dokuments durchzuführen als mit einer LaTeX-Klasse.
Aktualisierung 2014-06-01: Die Vorlage gibt es inzwischen auch auf den Vorlagenseiten von Apache OpenOffice: ArialLatin Modern Sans