Kapitel 11. Datenkonvertierung

# Kapitel 11. Datenkonvertierung

Hier werden Werkzeuge und Tipps für die Umwandlung von Dateien in andere Formate beschrieben.

Bei Werkzeugen für auf Standards basierende Formate ist die Situation sehr gut, aber bei proprietären Formaten sind die Möglichkeiten eingeschränkt.

## 11.1. Werkzeuge für Textkonvertierung

Folgende Pakete zur Textkonvertierung sind mir aufgefallen:

Tabelle 11.1. Liste von Textkonvertierungs-Werkzeugen

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`libc6` | V:942, I:1000 | 5481 | charset | Konvertierung der Textkodierung zwischen verschiedenen Gebietsschemata (Locales) mit iconv(1) (elementar)
`recode` | V:2, I:13 | 528 | charset+eol | Konvertierung der Textkodierung zwischen verschiedenen Gebietsschemata (Locales) (vielfältig, mehr Alias-Befehle und Funktionalitäten)
`konwert` | V:2, I:42 | 137 | charset | Konvertierung der Textkodierung zwischen verschiedenen Gebietsschemata (Locales) (extravagant)
`nkf` | V:0.4, I:8.5 | 360 | charset | Zeichensatzkonvertierer für Japanisch
`tcs` | V:0.01, I:0.14 | 518 | charset | Zeichensatzkonvertierer
`unaccent` | V:0.03, I:0.28 | 35 | charset | akzentuierte Buchstaben durch ihre nicht akzentuierten Pendants ersetzen
`tofrodos` | V:1, I:12 | 50 | eol | Konvertiert Textformate zwischen DOS und Unix: fromdos(1) und todos(1)
`macutils` | V:0.04, I:0.43 | 319 | eol | Konvertiert Textformate zwischen Macintosh und Unix: frommac(1) und tomac(1)

### 11.1.1. Konvertieren einer Textdatei mit iconv

| Tipp
iconv(1) ist Teil des `libc6`-Pakets und immer auf nahezu allen Unix-artigen Systemen für die Änderung der Zeichenkodierung verfügbar.

Sie können die Kodierung einer Textdatei wie folgt mit iconv(1) ändern:

    $ iconv -f encoding1 -t encoding2 input.txt >output.txt

Bei den Werten für die Kodierung ist die Groß-/Kleinschreibung nicht relevant, "`-`" und "`_`" werden ignoriert. Mit "`iconv -l`" können Sie überprüfen, welche Kodierungen unterstützt werden.

Tabelle 11.2. Liste von Werten für die Zeichenkodierung und deren Verwendung

Wert für Zeichenkodierung | Verwendung
--- | ---
ASCII | American Standard Code for Information Interchange, 7-Bit-Code ohne akzentuierte Zeichen
UTF-8 | aktueller multilingualer Standard für alle modernen Betriebssysteme
ISO-8859-1 | alter Standard für westeuropäische Sprachen; ASCII + akzentuierte Zeichen
ISO-8859-2 | alter Standard für osteuropäische Sprachen; ASCII + akzentuierte Zeichen
ISO-8859-15 | alter Standard für westeuropäische Sprachen; ISO-8859-1 + Euro-Zeichen
CP850 | Codepage 850, Microsoft-DOS-Zeichen mit Grafiken für westeuropäische Sprachen, Variante von ISO-8859-1
CP932 | Codepage 932, Shift-JIS-Variante für Japanisch (angelehnt an Microsoft Windows)
CP936 | Codepage 936, GB2312-, GBK- oder GB18030-Variante für vereinfachtes Chinesisch (angelehnt an Microsoft Windows)
CP949 | Codepage 949, EUC-KR- oder Unified-Hangul-Code-Variante für Koreanisch (angelehnt an Microsoft Windows)
CP950 | Codepage 950, Big5-Variante für traditionelles Chinesisch (angelehnt an Microsoft Windows)
CP1251 | Codepage 1251, Kodierung für das kyrillische Alphabet (angelehnt an Microsoft Windows)
CP1252 | Codepage 1252, ISO-8859-15-Variante für westeuropäische Sprachen (angelehnt an Microsoft Windows)
KOI8-R | alter russischer UNIX-Standard für das kyrillische Alphabet
ISO-2022-JP | Standard-Kodierung für japanische E-Mails, die nur 7-Bit-Codes verwenden
eucJP | alter japanischer UNIX-Standard-Code (8-Bit), völlig verschieden von Shift-JIS
Shift-JIS | Standard für Japanisch gemäß JIS X 0208 Anhang 1 (siehe auch CP932)

| Anmerkung
Einige der obigen Kodierungen werden nur für die Konvertierung unterstützt und nicht als Wert für das Gebietsschema (Locale) (Abschnitt 8.1, „Das Gebietsschema (Locale)“).

Bei Zeichensätzen, die nur ein einziges Byte benötigen (wie ASCII und ISO-8859), entspricht die Zeichenkodierung nahezu dem Zeichensatz.

Bei Zeichensätzen mit vielen Zeichen (wie JIS X 0213 für Japanisch oder Universal Character Set (UCS, Unicode, ISO-10646-1) für praktisch alle Sprachen) gibt es viele Kodierungsschemata, die in die Sequenz der Byte-Daten eingepasst werden:

- EUC und ISO/IEC 2022 (auch bekannt als JIS X 0202) für Japanisch;

- UTF-8, UTF-16/UCS-2 und UTF-32/UCS-4 für Unicode.

Bei diesen gibt es klare Differenzierungen zwischen Zeichensatz und Zeichenkodierung.

Die Codepage wird als Synonym für einige hersteller-spezifische Zeichenkodierungstabellen verwendet.

| Anmerkung

Bitte beachten Sie, dass die meisten Kodierungssysteme sich bei den 7-Bit-Zeichen identischen Code mit ASCII teilen, aber es gibt einige Ausnahmen. Wenn Sie alte japanische C-Programme und URLs aus dem Shift-JIS genannten Kodierungsformat nach UTF-8 konvertieren, müssen Sie "`CP932`" als Kodierungsname statt "`shift-JIS`" verwenden, um die erwarteten Resultate zu bekommen: `0x5C` → "`\`" und `0x7E` → "`~`". Andernfalls werden diese falsch konvertiert.

| Tipp
recode(1) kann ebenfalls verwendet werden und bietet mehr als die kombinierte Funktionalität von iconv(1), fromdos(1), todos(1), frommac(1) und tomac(1). Weitere Informationen finden Sie unter "`info recode`".

### 11.1.2. Prüfen mit iconv, ob eine Datei UTF-8-kodiert ist

Sie können mit iconv(1) wie folgt überprüfen, ob eine Textdatei in UTF-8 kodiert ist:

    $ iconv -f utf8 -t utf8 input.txt >/dev/null || echo "non-UTF-8 found"

| Tipp
Verwenden Sie die Option "`--verbose`" in obigem Beispiel, um das erste nicht in UTF-8 kodierte Zeichen zu finden.

### 11.1.3. Dateinamen konvertieren mit iconv

Hier ein Beispielskript, um die Kodierung für alle Dateinamen in einem Verzeichnis von einer auf einem älteren Betriebssystem erzeugten Form in das moderne UTF-8 zu konvertieren:

    #!/bin/sh
    ENCDN=iso-8859-1
    for x in *;
     do
     mv "$x" "$(echo "$x" | iconv -f $ENCDN -t utf-8)"
    done

Die "`$ENCDN`"-Variable gibt dabei die Original-Kodierung (gemäß Tabelle 11.2, „Liste von Werten für die Zeichenkodierung und deren Verwendung“) an, die in dem älteren Betriebssystem für die Dateinamen verwendet wurde.

In komplizierteren Fällen binden Sie bitte ein Dateisystem, das solche Dateinamen enthält (z.B. eine Festplattenpartition), mit korrekter Angabe der Dateinamenkodierung als Option zum mount(8)-Befehl ein (lesen Sie dazu Abschnitt 8.1.3, „Dateinamenkodierung“), und kopieren Sie mit "`cp -a`" den vollständigen Inhalt der Partition in ein anderes Dateisystem, das als UTF-8 eingebunden ist.

### 11.1.4. EOL-Konvertierung

Das Format einer Textdatei, speziell der EOL-Code (end-of-line, Zeilenende), ist abhängig von der Systemplattform.

Tabelle 11.3. Liste der EOL-Codes für verschiedene Plattformen

Plattform | EOL-Code | Steuerung | dezimal | hexadezimal
--- | --- | --- | --- | ---
Debian (Unix) | LF | `^J` | 10 | 0A
MSDOS und Windows | CR-LF | `^M^J` | 13 10 | 0D 0A
Apples Macintosh | CR | `^M` | 13 | 0D

Die Programme fromdos(1), todos(1), frommac(1) und tomac(1) zur Konvertierung des EOL-Formats sind ziemlich praktisch. recode(1) ist ebenfalls sehr nützlich.

| Anmerkung
Einige Daten im Debian-System, wie z.B. die Daten zur Wiki-Seite für das `python-moinmoin`-Paket, nutzen CR-LF gemäß MSDOS-Art als EOL-Code. Daher sind obige Aussagen nur als allgemeiner Grundsatz zu verstehen.

| Anmerkung
Die meisten Editoren (wie `vim`, `emacs`, `gedit`, …) können mit Dateien mit EOL-Code im MSDOS-Stil transparent umgehen, ohne dass Sie es merken.

| Tipp
Um eine Mischung aus MSDOS- und Unix-artigem EOL-Stil (z.B. nach der Zusammenführung von zwei Dateien im MSDOS-Stil mit diff3(1)) in einen einheitlichen MSDOS-Stil umzuwandeln, ist die Verwendung von "`sed -e '/\r$/!s/$/\r/'`" der von todos(1) vorzuziehen. Der Grund hierfür ist, dass `todos` jeder Zeile ein CR hinzufügt.

### 11.1.5. TAB-Konvertierung

Es gibt ein paar bekannte spezialisierte Programme für die Konvertierung der TAB-Codes:

Tabelle 11.4. Liste der Befehle zur TAB-Konvertierung aus den Paketen `bsdmainutils` und `coreutils`

Funktion | `bsdmainutils` | `coreutils`
--- | --- | ---
TAB in Leerzeichen wandeln | "`col -x`" | `expand`
Leerzeichen in TAB wandeln | "`col -h`" | `unexpand`

indent(1) aus dem `indent`-Paket formatiert alle Whitespaces (Leerraumzeichen) in einem C-Programm neu.

Auch Editoren wie `vim` und `emacs` können zur TAB-Konvertierung genutzt werden. Bei `vim` z.B. verwenden Sie die Befehlssequenz "`:set expandtab`" + "`:%retab`", um ein TAB zum Leerzeichen zu expandieren. Den umgekehrten Fall erreichen Sie mit "`:set noexpandtab`" + "`:%retab!`".

### 11.1.6. Editoren mit automatischer Konvertierung

Moderne Editoren wie `vim` sind sehr clever und können mit jeglichen Kodierungssystemen und Dateiformaten umgehen. Für beste Kompatibilität sollten Sie diese Editoren mit einem UTF-8-Gebietsschema in einer UTF-8-tauglichen Konsole verwenden.

Eine alte westeuropäische Unix-Textdatei "`u-datei.txt`", gespeichert in der alten latin1-Kodierung (ISO-8859-1), kann mit `vim` einfach wie folgt bearbeitet werden:

    $ vim u-file.txt

Dies ist möglich, da die automatische Erkennung der Dateikodierung in `vim` zunächst von einer UTF-8-Kodierung ausgeht und, falls dies fehlschlägt, latin1 verwendet.

Eine alte polnische Unix-Textdatei "`pu-datei.txt`", gespeichert in der alten latin2-Kodierung (ISO-8859-2), kann mit `vim` wie folgt bearbeitet werden:

    $ vim '+e ++enc=latin2 pu-file.txt'

Eine alte japanische Unix-Textdatei "`ju-datei.txt`", gespeichert in der eucJP-Kodierung, kann mit `vim` wie folgt bearbeitet werden:

    $ vim '+e ++enc=eucJP ju-file.txt'

Eine alte japanische MS-Windows-Textdatei "`jw-datei.txt`", gespeichert in der sogenannten Shift-JIS-Kodierung (präziser: CP932), kann mit `vim` wie folgt bearbeitet werden:

    $ vim '+e ++enc=CP932 ++ff=dos jw-file.txt'

Wenn eine Datei mit den Optionen "`++enc`" und "`++ff`" geöffnet wird, speichert "`:w`" in der Vim-Befehlszeile sie im Originalformat ab und überschreibt die Originaldatei. Sie können auch das zum Speichern zu nutzende Format und den Dateinamen mit angeben, z.B. "`:w ++enc=utf8 neu.txt`".

Bitte lesen Sie den Abschnitt zum "Multi-byte text support" (mbyte.txt) in der `vim`-Online-Hilfe sowie Tabelle 11.2, „Liste von Werten für die Zeichenkodierung und deren Verwendung“ für Infos, welche Locale-Werte mit der "`++enc`"-Option genutzt werden können.

Die `emacs`-Programmfamilie bietet ähnliche Funktionalitäten.

### 11.1.7. Extrahieren von reinem Text

Folgender Befehl liest eine Webseite in eine Textdatei ein. Das ist sehr nützlich, wenn Sie Konfigurationsbeispiele aus dem Web kopieren oder grundlegende Unix-Textbearbeitungswerkzeuge wie grep(1) auf den Inhalt der Webseite anwenden möchten.

    $ w3m -dump https://www.remote-site.com/help-info.html >textfile

Ähnlich dazu können Sie reine Textdaten wie folgt aus anderen Formaten extrahieren:

Tabelle 11.5. Liste von Werkzeugen zum Extrahieren von reinen Textdaten

Paket | Popcon | Größe | Schlüsselwort | Funktion
--- | --- | --- | --- | ---
`w3m` | V:10, I:134 | 2853 | html → text | HTML-zu-Text-Konvertierung mit dem Befehl "`w3m -dump`"
`html2text` | V:3, I:68 | 298 | html → text | fortgeschrittener HTML-zu-Text-Konvertierer (ISO 8859-1)
`lynx` | V:29, I:448 | 2031 | html → text | HTML-zu-Text-Konvertierung mit dem Befehl "`lynx -dump`"
`elinks` | V:3, I:16 | 1791 | html → text | HTML-zu-Text-Konvertierung mit dem Befehl "`elinks -dump`"
`links` | V:2, I:21 | 2321 | html → text | HTML-zu-Text-Konvertierung mit dem Befehl "`links -dump`"
`links2` | V:0.8, I:8.6 | 5466 | html → text | HTML-zu-Text-Konvertierung mit dem Befehl "`links2 -dump`"
`catdoc` | V:15, I:170 | 682 | MSWord → text,TeX | Konvertierung von MSWord-Dateien in reinen Text oder TeX
`antiword` | V:0.9, I:6.7 | 587 | MSWord → text,ps | Konvertierung von MSWord-Dateien in reinen Text oder PostScript
`unhtml` | V:0.05, I:0.49 | 40 | html → text | Entfernen der Markups (Markierungen) aus einer HTML-Datei
`odt2txt` | V:1, I:20 | 60 | odt → text | Konvertierung von OpenDocument-Text in reinen Text

### 11.1.8. Hervorheben und Formatieren von reinen Textdaten

Reine Textdaten können mit folgenden Befehlen hervorgehoben und formatiert werden:

Tabelle 11.6. Liste von Werkzeugen für Hervorhebung/Formatierung von Textdaten

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`vim-runtime` | V:18, I:360 | 38849 | Hervorheben | Vim-Macro zur Konvertierung von Quellcode nach HTML (mit "`:source $VIMRUNTIME/syntax/html.vim`")
`cxref` | V:0.01, I:0.23 | 1191 | c → html | Konvertierung eines C-Programms nach Latex und HTML (C-Sprache)
`src2tex` | V:0.02, I:0.16 | 1799 | Hervorheben | Konvertierung von vielen Quellcode-Formaten nach TeX (C-Sprache)
`source-highlight` | V:0.4, I:3.1 | 2131 | Hervorheben | Konvertierung von vielen Quellcode-Formaten nach HTML, XHTML, LaTeX, Texinfo, ANSI-Color-Escape-Sequenzen und DocBook-Dateien mit Hervorhebung (C++)
`highlight` | V:0.4, I:3.1 | 1412 | Hervorheben | Konvertierung von vielen Quellcode-Formaten nach HTML, XHTML, RTF, LaTeX, TeX oder XSL-FO-Dateien mit Hervorhebung (C++)
`grc` | V:0.9, I:5.9 | 208 | text → color | grundlegender Einfärber für alles (Python)
`pandoc` | V:10, I:46 | 209102 | text → any | grundlegender Markup-Konvertierer (Haskell)
`python3-docutils` | V:11, I:50 | 2013 | text → any | reStructuredText-Dokument-Formatierer nach XML (Python)
`markdown` | V:0.4, I:6.1 | 56 | text → html | Markdown: Textdokument-Konvertierer in (X)HTML (Perl)
`asciidoctor` | V:0.4, I:5.0 | 101 | text → any | AsciiDoc: Textdokument-Konvertierer in XML/HTML (Ruby)
`python3-sphinx` | V:6, I:25 | 3234 | text → any | auf reStructured Text basierendes Dokumenten-Publikationssystem (Python)
`hugo` | V:0.8, I:5.3 | 66736 | text → html | auf Markdown basierendes Static-Site Publikationssystem (Go)

## 11.2. XML-Daten

Die Extensible Markup Language (XML) ist eine Markup-Sprache für Dokumente mit Strukturinformationen.

Einführende Informationen finden Sie unter XML.COM:

- "Was ist XML? (englisch)"

- "Was ist XSLT? (englisch)"

- "Was ist XSL-FO? (englisch)"

- "Was ist XLink? (englisch)"

### 11.2.1. Grundlegende Hinweise für XML

Ein XML-Text sieht ein wenig wie HTML aus. XML ermöglicht es uns, verschiedene Ausgabeformate für ein und dasselbe Dokument zu verwalten. Ein einfaches XML-System ist `docbook-xsl`,das auch für dieses Dokument verwendet wird.

Jede XML-Datei beginnt mit einer Standard-XML-Deklaration wie der folgenden:

    <?xml version="1.0" encoding="UTF-8"?>

Die grundlegende Syntax für ein XML-Element ist wie folgt gekennzeichnet:

    <name attribute="value">content</name>

Die Kurzform für ein XML-Element mit leerem Inhalt ist wie folgt:

    <name attribute="value" />

Das "`attribute="Wert"`" in obigen Beispielen ist optional.

Ein Kommentar-Abschnitt wird in XML wie folgt gekennzeichnet:

    <!-- comment -->

Anders als beim Hinzufügen von Markierungen (Markups) erfordert XML minimale Konvertierungen am Inhalt, um vordefinierte Entitäten für die folgenden Zeichen zu nutzen:

Tabelle 11.7. Liste von vordefinierten Entitäten für XML

vordefinierte Entität | Zeichen, in das konvertiert werden soll
--- | ---
`&quot;` | `"` (Anführungszeichen)
`&apos;` | `'` (Apostroph)
`&lt;` | `<` (kleiner-als)
`&gt;` | `>` (größer-als)
`&amp;` | `&` (kaufmännisches Und)

| Achtung
"`<`" oder "`&`" können nicht in Attributen oder Elementen verwendet werden.

| Anmerkung
Wenn anwenderdefinierte Entitäten im SGML-Stil verwendet werden, wie z.B. "`&irgendein-begriff;`", wird die erste Definition gegenüber darauffolgenden bevorzugt. Die Entität wird in Form von "`<!ENTITY irgendein-begriff "Wert der Entität">`" definiert.

| Anmerkung
Solange die XML-Markierungen konsistent mit einer bestimmten Art von Namen für diese Markierungen (entweder Daten als Inhalt oder Attributwert) ausgeführt sind, ist die Konvertierung in eine andere XML-Form mittels Extensible Stylesheet Language Transformations (XSLT) eine banale Aufgabe.

### 11.2.2. XML-Verarbeitung

Es gibt viele Werkzeuge zur Verarbeitung von XML-Dateien, wie z.B. die Extensible Stylesheet Language (XSL).

Grundsätzlich ist es so, dass Sie eine korrekt formatierte XML-Datei mittels Extensible Stylesheet Language Transformation (XSLT) in jegliches Format umwandeln können.

Extensible Stylesheet Language for Formatting Objects (XSL-FO) ist eine Lösung zur Formatierung. Das `fop`-Paket ist (aufgrund seiner Abhängigkeit zur Java-Programmiersprache) neu in Debians `main`-Archiv. Daher wird im Allgemeinen LaTEX-Code mittels XSLT aus XML erstellt und das LaTEX-System dann verwendet, um druckfähige Dateien wie DVI, PostScript oder PDF zu erzeugen.

Tabelle 11.8. Liste von XML-Werkzeugen

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`docbook-xml` | V:15, I:404 | 2126 | xml | XML-Dokumententyp-Definition (DTD) für DocBook
`docbook-xsl` | V:14, I:145 | 14823 | xml/xslt | XSL-Stylesheets (Stilvorlagen), um DocBook-XML mittels XSLT in verschiedene Ausgabeformate umzuwandeln
`xsltproc` | V:15, I:72 | 83 | xslt | XSLT-Befehlszeilen-Prozessor (XML→ XML, HTML, reinen Text usw.)
`xmlto` | V:0.5, I:8.8 | 124 | xml/xslt | XML-nach-alles-Konvertierer mit XSLT
`fop` | V:0.6, I:7.6 | 281 | xml/xsl-fo | Docbook-XML-Dateien nach PDF konvertieren
`dblatex` | V:0.9, I:5.9 | 4636 | xml/xslt | DocBook-Dateien mittels XSLT nach DVI, PostScript und PDF konvertieren
`dbtoepub` | V:0.05, I:0.58 | 37 | xml/xslt | DocBook-XML-nach-epub-Konvertierer

Da XML eine Untermenge der Standard Generalized Markup Language (SGML) ist, kann es mit den umfangreichen Werkzeugen, die für SGML verfügbar sind (wie der Document Style Semantics and Specification Language (DSSSL)) verarbeitet werden.

Tabelle 11.9. Liste von DSSSL-Werkzeugen

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`openjade` | V:1, I:22 | 1066 | dsssl | ISO/IEC 10179:1996 - standardkonformer DSSSL-Prozessor (aktuell)
`docbook-dsssl` | V:0.5, I:8.0 | 2594 | xml/dsssl | DSSSL-Stylesheets (Stilvorlagen), um DocBook-XML mittels DSSSL in verschiedene Ausgabeformate umzuwandeln
`docbook-utils` | V:0.3, I:5.7 | 287 | xml/dsssl | Werkzeuge für DocBook-Dateien (inklusive Konvertierung in andere Formate (HTML, RTF, PS, man, PDF) mit DSSSL mittels `docbook2*`-Befehlen)

| Tipp
GNOMEs `yelp` ist manchmal praktisch, da es DocBook-XML-Dateien ohne Konvertierung direkt vernünftig darstellen kann.

### 11.2.3. Extrahierung von XML-Daten

Sie können HTML- oder XML-Daten mit folgenden Programmen aus anderen Formaten extrahieren:

Tabelle 11.10. Liste von Werkzeugen zur Extrahierung von XML-Daten

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`man2html` | V:0.1, I:1.3 | 142 | manpage → html | Konvertierer von Handbuchseite (manpage) nach HTML (CGI-Unterstützung)
`doclifter` | I:0.04 | 487 | troff→xml | Konvertierer von troff nach DocBook XML
`texi2html` | V:0.2, I:2.9 | 1847 | texi → html | Konvertierer von Texinfo nach HTML
`info2www` | V:0.9, I:1.5 | 76 | info → html | Konvertierer von GNU info nach HTML (CGI-Unterstützung)
`wv` | V:0.2, I:2.5 | 733 | MSWord → alle | Dokumentenkonvertierer von Microsoft Word nach HTML, LaTeX usw.
`unrtf` | V:0.3, I:3.0 | 159 | rtf → html | Dokumentenkonvertierer von RTF nach HTML usw.
`wp2x` | I:0.09 | 200 | WordPerfect → any | WordPerfect-5.0- und -5.1-Dateien nach TeX, LaTeX, troff, GML und HTML konvertieren

### 11.2.4. XML Lint

HTML-Dateien (nicht-XML) können Sie nach XHTML konvertieren, was eine Instanz von korrekt formatiertem XML ist. XHTML kann von XML-Werkzeugen verarbeitet werden.

Die Syntax von XML-Dateien und die Gültigkeit von enthaltenen URLs können geprüft werden.

Tabelle 11.11. Liste von XML-Druck-Werkzeugen

Paket | Popcon | Größe | Funktion | Beschreibung
--- | --- | --- | --- | ---
`libxml2-utils` | V:60, I:210 | 211 | xml ↔ html ↔ xhtml | Befehlszeilen-XML-Werkzeug mit xmllint(1) (Syntaxüberprüfung, Neuformatierung, …)
`tidy` | V:0.8, I:7.5 | 79 | xml ↔ html ↔ xhtml | HTML-Syntaxüberprüfung und Neuformatierung
`weblint-perl` | V:0.05, I:0.96 | 32 | lint | Ein Syntax- und (Minimal-)Stil-Prüfprogramm für HTML
`linklint` | V:0.06, I:0.49 | 343 | Link-Prüfung | Schneller Linkchecker und Werkzeug für die Webseitenpflege

Sobald eine saubere XML-Basis generiert wurde, können Sie die XSLT-Technologie nutzen, um Daten basierend auf dem Markup-Kontext zu extrahieren usw.

## 11.3. Textsatz

Das Unix-Programm troff, ursprünglich von AT&T entwickelt, kann für einfachen Textsatz verwendet werden. Es wird normalerweise genutzt, um Handbuchseiten (manpages) zu erzeugen.

TeX, entwickelt von Donald Knuth, ist ein sehr leistungsfähiges Textsatz-Werkzeug und der De-Facto-Standard. LaTeX (ursprünglich geschrieben von Leslie Lamport) ermöglicht einen sehr hochentwickelten Zugriff auf die Fähigkeiten von TeX.

Tabelle 11.12. Liste von Textsatz-Werkzeugen

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`texlive` | V:1, I:27 | 55 | (La)TeX | TeX-System für Textsatz, Vorschau und Druck
`lilypond` | V:0.6, I:5.7 | 16924 | (La)TeX | Notensatzprogramm
`groff` | V:2, I:24 | 16514 | troff | GNU troff Textformatierungs-System

### 11.3.1. roff-Textsatz

Traditionell ist roff das Haupt-Unix-System zur Textverarbeitung. Lesen Sie roff(7), groff(7), groff(1), grotty(1), troff(1), groff_mdoc(7), groff_man(7), groff_ms(7), groff_me(7), groff_mm(7) und "`info groff`".

Sie bekommen eine gute Einführung und Referenz zum "`-me`"-Makro in "`/usr/share/doc/groff/`", wenn Sie das `groff`-Paket installiert haben.

| Tipp
"`groff -Tascii -me -`" erzeugt reinen Text mit ANSI-Escape-Sequenzen. Wenn Sie eine Ausgabe ähnlich zu den Handbuchseiten mit vielen "^H" und "_" möchten, verwenden Sie stattdessen "`GROFF_NO_SGR=1 groff -Tascii -me -`".

| Tipp
Um "^H" und "_" aus einer mit `groff` erzeugten Textdatei zu entfernen, filtern Sie diese mit "`col -b -x`".

### 11.3.2. TeX/LaTeX

Die TeX Live-Software-Distribution stellt ein vollständiges TeX-System bereit. Das `texlive`-Metapaket enthält eine sinnvolle Auswahl von TeX Live-Paketen, die für die meisten Aufgaben ausreichend sein sollten.

Es gibt viele Ressourcen für TeX und LaTeX:

- The teTeX HOWTO: The Linux-teTeX Local Guide;

- tex(1);

- latex(1);

- texdoc(1);

- texdoctk(1);

- "The TeXbook", von Donald E. Knuth (Addison-Wesley);

- "LaTeX - A Document Preparation System", von Leslie Lamport (Addison-Wesley);

- "The LaTeX Companion", von Goossens, Mittelbach, Samarin (Addison-Wesley).

TeX/LaTeX ist die leistungsfähigste Textsatz-Umgebung. Viele SGML-Prozessoren nutzen es im Hintergrund zur Textverarbeitung. Lyx aus dem `lyx`-Paket sowie GNU TeXmacs aus dem `texmacs`-Paket bieten eine nette WYSIWYG-Umgebung zum Editieren von LaTeX-Dokumenten, zu der viele Leute Emacs oder Vim als Quelltext-Editor wählen.

Es sind viele Online-Ressourcen verfügbar:

- The TEX Live Guide - TEX Live 2007 ("`/usr/share/doc/texlive-doc-base/english/texlive-en/live.html`" aus dem `texlive-doc-base`-Paket);

- A Simple Guide to Latex/Lyx;

- Word Processing Using LaTeX;

Wenn die Dokumente größer werden, kann TeX eventuell Fehler verursachen. Sie müssen dann die Pool-Größe in "`/etc/texmf/texmf.cnf`" erhöhen (oder editieren Sie besser "`/etc/texmf/texmf.d/95NonPath`" und führen update-texmf(8) aus), um dieses Problem zu beheben.

| Anmerkung

Der TeX-Quelltext von "The TeXbook" ist auf der www.ctan.org Tex-Archiv-Seite für texbook.tex verfügbar. Diese Datei enthält die meisten der benötigten Makros. Ich habe gehört, dass Sie dieses Dokument mit tex(1) verarbeiten können, wenn Sie die Zeilen 7 - 10 auskommentieren und "`\input manmac \proofmodefalse`" hinzufügen. Es wird dringend empfohlen, dass Sie dieses Buch (wie auch alle anderen Bücher von Donald E. Knuth) kaufen, statt die Online-Version zu lesen, aber der Quelltext ist ein tolles Beispiel für TeX-Eingaben!

### 11.3.3. Schöner Ausdruck einer Handbuchseite

Sie können eine Handbuchseite (manpage) in PostScript mit einem der folgenden Befehle schön ausdrucken:

    $ man -Tps some_manpage | lpr

### 11.3.4. Erstellen einer Handbuchseite

Obwohl es möglich ist, eine Handbuchseite (manpage) in reinem troff-Format zu schreiben, gibt es auch einige Pakete mit Hilfsprogrammen zur Erstellung einer Handbuchseite:

Tabelle 11.13. Liste von Paketen, die bei der Erstellung einer Handbuchseite helfen

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`docbook-to-man` | V:0.5, I:5.7 | 189 | SGML → manpage | Konvertierer vom DocBook-SGML-Format in roff-man-Makros
`help2man` | V:0.5, I:6.4 | 542 | text → manpage | Automatisch Handbuchseiten aus --help-Ausgabe generieren
`info2man` | V:0.02, I:0.21 | 134 | info → manpage | Konvertierer von GNU-info-Dateien nach POD oder Manpage
`txt2man` | V:0.05, I:0.66 | 112 | text → manpage | Einfachen ASCII-Text in das Manpage-Format umwandeln

## 11.4. Druckfähige Daten

Druckfähige Daten werden im Debian-System im PostScript-Format dargestellt. CUPS (Common Unix Printing System) verwendet Ghostscript als Rasterizer-Backend-Programm für Drucker, die selbst kein PostScript interpretieren können.

Druckfähige Daten können im aktuellen Debian-System auch im PDF-Format angezeigt werden.

Zum Anzeigen von PDF-Dateien und Ausfüllen von Formulardaten in diesen Dateien können Werkzeuge wie Evince und Okular verwendet werden (siehe Abschnitt 7.4, „GUI-Anwendungen“), sowie auch moderne Browser wie Chromium.

Mit grafischen Programmen wie LibreOffice, Scribus und Inkscape können Sie PDF-Dateien auch bearbeiten (siehe dazu Abschnitt 11.6, „Werkzeuge für Grafikdaten“).

| Tipp
Sie können eine PDF-Datei mit GIMP einlesen und in das PNG-Format konvertieren; nutzen Sie dazu eine Auflösung größer als 300 dpi. Dies kann dann als Hintergrundbild für LibreOffice genutzt werden, um so mit minimalem Aufwand einen nach Wunsch angepassten Ausdruck zu erstellen.

### 11.4.1. Ghostscript

Der Kern der Verarbeitung von druckfähigen Daten ist ein Ghostscript-PostScript (PS)-Interpreter, der ein Raster-Image erzeugt.

Tabelle 11.14. Liste von Ghostscript-PostScript-Interpretern

Paket | Popcon | Größe | Beschreibung
--- | --- | --- | ---
`ghostscript` | V:181, I:559 | 177 | der GPL Ghostscript-PostScript/PDF-Interpreter
`ghostscript-x` | V:0, I:14 | 88 | GPL Ghostscript-PostScript/PDF-Interpreter - Unterstützung für Anzeige unter X
`libpoppler162` | V:1.2, I:3.1 | 5313 | Bibliothek zur PDF-Darstellung, Abspaltung von dem PDF-Anzeigeprogramm xpdf
`libpoppler-glib8t64` | V:73, I:307 | 612 | Bibliothek zur PDF-Darstellung (Laufzeitbibliothek auf Basis von GLib)
`poppler-data` | V:169, I:580 | 13086 | CMaps für Bibliothek zur PDF-Darstellung (für CJK-Unterstützung: Adobe-*)

| Tipp
"`gs -h`" zeigt die Konfiguration von Ghostscript an.

### 11.4.2. Zwei PS- oder PDF-Dateien zusammenführen

Sie können zwei PostScript (PS)- oder Portable Document Format (PDF)-Dateien mit dem gs(1)-Befehl von Ghostscript zusammenführen:

    $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=bla.ps -f foo1.ps foo2.ps
    $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=bla.pdf -f foo1.pdf foo2.pdf

| Anmerkung
PDF, ein plattform-unabhängiges Datenformat für druckfähige Daten, ist im Grunde ein komprimiertes PS-Format mit einigen zusätzlichen Funktionalitäten und Erweiterungen.

| Tipp
Auf der Befehlszeile sind psmerge(1) und andere Befehle aus dem `psutils`-Paket sehr nützlich zur Bearbeitung von PostScript-Dokumenten. pdftk(1) aus dem `pdftk`-Paket ist ebenfalls praktisch, um PDF-Dokumente zu bearbeiten.

### 11.4.3. Werkzeuge für druckfähige Daten

Folgende Pakete mit Werkzeugen für druckfähige Daten sind mir ins Auge gestochen:

Tabelle 11.15. Liste von Werkzeugen für druckfähige Daten

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`poppler-utils` | V:156, I:471 | 804 | pdf → ps,text,… | PDF-Hilfsprogramme: `pdftops`, `pdfinfo`, `pdfimages`, `pdftotext`, `pdffonts`
`psutils` | V:4, I:50 | 34 | ps → ps | Werkzeuge zur Konvertierung von PostScript-Dokumenten
`poster` | V:0.1, I:1.8 | 57 | ps → ps | Erzeugen großer Poster aus PostScript-Seiten
`enscript` | V:1, I:11 | 2138 | text → ps,html,rtf | Konvertieren von ASCII-Text nach PostScript, HTML, RTF oder Pretty-Print
`a2ps` | V:1.0, I:7.0 | 4109 | text → ps | 'Anything to PostScript'-Konvertierer (jegliches nach PostScript) und Pretty-Printer
`pdftk` | V:1, I:21 | 28 | pdf → pdf | Werkzeug zur Konvertierung von PDF-Dokumenten: `pdftk`
`html2ps` | V:0.1, I:1.8 | 256 | html → ps | Konvertierer von HTML nach PostScript
`gnuhtml2latex` | V:0.02, I:0.63 | 26 | html → latex | Konvertierer von HTML nach LaTeX
`latex2rtf` | V:0.1, I:1.6 | 495 | latex → rtf | Konvertieren von Dokumenten von LaTeX nach RTF, die dann von MS Word gelesen werden können
`ps2eps` | V:2, I:32 | 95 | ps → eps | Konvertierer von PostScript nach EPS (Encapsulated PostScript)
`e2ps` | V:0.01, I:0.12 | 104 | text → ps | Text-nach-PostScript-Konvertierer mit Unterstützung für japanische Zeichenkodierung
`impose+` | V:0.1, I:1.5 | 118 | ps → ps | PostScript-Hilfsprogramme
`trueprint` | V:0.01, I:0.07 | 148 | text → ps | Viele Quellformate (C, C++, Java, Pascal, Perl, Pike, Sh und Verilog) nach PostScript konvertieren mittels Pretty-Print (C-Sprache)
`pdf2svg` | V:0.2, I:3.0 | 33 | pdf→svg | Konvertierer von PDF in das Scalable Vector Graphics-Format
`pdftoipe` | V:0.01, I:0.46 | 69 | pdf→ipe | Konvertierer von PDF in IPE's XML-Format

### 11.4.4. Drucken mit CUPS

Die beiden vom Common Unix Printing System (CUPS) angebotenen Befehle lp(1) und lpr(1) bieten Optionen, um das Drucken von druckfähigen Daten spezifisch anzupassen.

Mit einem der folgenden Befehle können Sie drei Kopien einer Datei auf einmal ausdrucken:

    $ lp -n 3 -o Collate=True filename

    $ lpr -#3 -o Collate=True filename

Druckoperationen können über Optionen für den Drucker noch weitgehender angepasst werden, z.B. mit "`-o number-up=2`", "`-o page-set=even`", "`-o page-set=odd`", "`-o scaling=200`", "`-o natural-scaling=200`" usw. Diese Optionen sind dokumentiert unter Command-Line Printing and Options (wenn Sie CUPS installiert haben).

## 11.5. Konvertierung von Mail-Daten

Folgende Pakete für die Konvertierung von Mail-Daten sind mir aufgefallen:

Tabelle 11.16. Liste von Paketen zur Konvertierung von Mail-Daten

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`sharutils` | V:2, I:28 | 1436 | mail | shar(1), unshar(1), uuencode(1), uudecode(1)
`mpack` | V:0.8, I:8.0 | 109 | MIME | Kodieren und Dekodieren von MIME-Nachrichten: mpack(1) und munpack(1)
`tnef` | V:0.3, I:4.0 | 103 | ms-tnef | Auspacken von MIME-Anhängen des Typs "application/ms-tnef" (ein nur von Microsoft verwendetes Format)
`uudeview` | V:0.2, I:1.8 | 105 | mail | Kodieren und Dekodieren folgender Formate: uuencode, xxencode, BASE64, quoted printable und BinHex

| Tipp
Ein Internet Message Access Protocol-Server der Version 4 (IMAP4) kann verwendet werden, um Mails von proprietären Mail-Systemen zu exportieren; dazu muss der Mail-Client (z.B. unter Windows) so konfiguriert werden, dass er den auf dem Debian-System laufenden IMAP4-Server nutzt.

### 11.5.1. Grundlagen zu Mail-Daten

Mail-Daten (SMTP) sollten auf eine Abfolge von 7-Bit-Zeichen beschränkt werden. Daher werden Binärdaten und 8-Bit-Textdaten über Multipurpose Internet Mail Extensions (MIME) und die Auswahl des Zeichensatzes (lesen Sie dazu Tabelle 11.2, „Liste von Werten für die Zeichenkodierung und deren Verwendung“) im 7-Bit-Format kodiert.

Das Standardformat zum Speichern von Mails ist mbox gemäß RFC2822 (aktualisiertes RFC822). Näheres dazu in mbox(5) (aus dem `mutt`-Paket).

Für europäische Sprachen wird normalerweise "`Content-Transfer-Encoding: quoted-printable`" mit dem ISO-8859-1-Zeichensatz bei Mails verwendet, da es dabei nicht viele 8-Bit-Zeichen gibt. Wenn europäischer Text in UTF-8 kodiert ist, wird dabei voraussichtlich "`Content-Transfer-Encoding: quoted-printable`" benutzt, da es überwiegend 7-Bit-Zeichen sind.

Für Japanisch wird gewöhnlich "`Content-Type: text/plain; charset=ISO-2022-JP`" bei Mails verwendet, um den Text im 7-Bit-Format zu halten. Ältere Microsoft-Systeme könnten jedoch Mail-Daten in Shift-JIS versenden, ohne dies korrekt zu deklarieren. Wenn japanischer Text in UTF-8 kodiert ist, wird dabei voraussichtlich Base64 benutzt, da dabei viele 8-Bit-Zeichen enthalten sind. Die Situation bei anderen asiatischen Sprachen ist ähnlich.

| Anmerkung
Falls Sie mit einer Debian-fremden Client-Software auf Ihre nicht-Unix-Mail-Daten zugreifen können und dieser Client auch mit einem IMAP4-Server kommunizieren kann, können Sie die Mails von dem Fremdsystem herunterholen, indem Sie einen eigenen IMAP4-Server laufen lassen.

| Anmerkung
Nutzen Sie andere Formate zur Speicherung Ihrer Mails, ist die Umstellung auf das mbox-Format ein guter erster Schritt. Ein vielseitiges Client-Programm wie z.B. mutt(1) kann dabei nützlich sein.

Sie können den Inhalt einer Mailbox auf einzelne Nachrichten aufsplitten, indem Sie procmail(1) und formail(1) verwenden.

Jede Mail kann mittels munpack(1) aus dem `mpack`-Paket (oder mit anderen spezialisierten Werkzeugen) entpackt werden, um die MIME-kodierten Inhalte zu erhalten.

## 11.6. Werkzeuge für Grafikdaten

Obwohl grafische GUI-Programme wie gimp(1) sehr leistungsfähig sind, können auch Befehlszeilenwerkzeuge wie imagemagick(1) nützlich sein, um automatisierte Bildbearbeitung über Skripte durchzuführen.

Der De-Facto-Standard für Bilddateien von Digitalkameras ist das Exchangeable Image File Format (EXIF); dies entspricht dem JPEG-Dateiformat mit zusätzlichen Metainformationen. Es kann auch Informationen wie Datum, Zeit und Kameraeinstellungen speichern.

Das Patent zur verlustlosen Datenkompression mit dem Lempel-Ziv-Welch-(LZW-)Algorithmus ist abgelaufen. Graphics Interchange Format (GIF)-Werkzeuge, die die LZW-Kompressionsmethode nutzen, sind jetzt frei im Debian-System verfügbar.

| Tipp
Alle Digitalkameras oder Scanner mit Wechseldatenträgern als Speichermedium funktionieren unter Linux über USB-Speicher-Lesegeräte, da sie die Design-Regeln für Kamera-Dateisysteme befolgen und FAT als Dateisystem verwenden. Näheres finden Sie in Abschnitt 10.1.7, „Wechseldatenträger“.

### 11.6.1. Werkzeuge für Grafikdaten (Metapaket)

Die folgenden Metapakete sind ein guter Startpunkt, wenn Sie mit aptitude(8) nach Grafikprogrammen suchen. "Packages overview for Debian PhotoTools Maintainers" kann ein anderer Ansatz sein.

Tabelle 11.17. Liste von Werkzeugen für Grafikdaten (Metapaket)

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`education-graphics` | I:0.34 | 25 | svg, jpeg, … | Metapaket zum Lehren von Grafik- und Fotokunst
`open-font-design-toolkit` | I:0.06 | 9 | ttf, ps, … | Metapaket für Open-font-Design

| Tipp
Weitere Werkzeuge zur Bildbearbeitung finden Sie mit dem regulären Ausdruck "`~Gworks-with::image`" in aptitude(8) (lesen Sie dazu Abschnitt 2.2.6, „Optionen für Suchmethoden mit aptitude“).

### 11.6.2. Werkzeuge für Grafikdaten (GUI)

Folgende Pakete zur Konvertierung, Bearbeitung und Organisation von grafischen Daten via GUI sind mir aufgefallen:

Tabelle 11.18. Liste von Werkzeugen für Grafikdaten (GUI)

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`gimp` | V:41, I:214 | 32779 | image(bitmap) | GNU Image Manipulation Program (GIMP)
`xsane` | V:8, I:129 | 1512 | image(bitmap) | GTK-basierte X11-Oberfläche für das Scanner-Programm SANE (Scanner Access Now Easy)
`scribus` | V:1, I:12 | 32415 | ps/pdf/SVG/… | Scribus DTP-Editor
`libreoffice-draw` | V:91, I:414 | 11209 | image(vector) | LibreOffice Office-Programm - Zeichnen
`inkscape` | V:11, I:76 | 113353 | image(vector) | SVG (Scalable Vector Graphics)-Editor
`dia` | V:1, I:15 | 3846 | image(vector) | Diagramm-Editor (Gtk)
`xfig` | V:0.8, I:8.4 | 7951 | image(vector) | Programm zur interaktiven Erzeugung von Objekten in X11
`gocr` | V:0.4, I:3.8 | 549 | image → text | freie OCR-Software
`eog` | V:24, I:137 | 10535 | image(Exif) | Bildbetrachter Eye of GNOME
`gthumb` | V:3, I:12 | 5162 | image(Exif) | Bildbetrachter und -browser (GNOME)
`geeqie` | V:3, I:11 | 3135 | image(Exif) | Bildbetrachter, der GTK verwendet
`shotwell` | V:14, I:243 | 6334 | image(Exif) | Digitalfoto-Organizer (GNOME)
`gwenview` | V:39, I:115 | 6000 | image(Exif) | Bildbetrachter (KDE)
`kamera` | I:114 | 992 | image(Exif) | Unterstützung von Digitalkameras für KDE-Anwendungen
`digikam` | V:1.5, I:8.6 | 325 | image(Exif) | Digitalfoto-Verwaltung für KDE
`darktable` | V:4, I:11 | 35876 | image(Exif) | virtueller Leuchttisch und Dunkelkammer für Photographen
`hugin` | V:0.4, I:5.7 | 6481 | image(Exif) | Panorama-Foto-Ersteller
`librecad` | V:1, I:12 | 9164 | DXF, ... | 2D-Editor für computerunterstützte Konstruktion (CAD)
`freecad` | V:1, I:19 | 112 | DXF, ... | 3D-Editor für computerunterstützte Konstruktion (CAD)
`blender` | V:2, I:19 | 169320 | blend, TIFF, VRML, … | Editor für 3D-Inhalte (Animationen usw.)
`mm3d` | V:0.02, I:0.26 | 4123 | ms3d, obj, dxf, … | 3D-Modell-Editor auf Basis von OpenGL
`fontforge` | V:0.5, I:5.8 | 4736 | ttf, ps, … | Editor für PS-, TrueType- und OpenType-Schriften
`xgridfit` | V:0.01, I:0.10 | 878 | ttf | Programm zum Gridfitting und Hinting von TrueType-Schriften

### 11.6.3. Werkzeuge für Grafikdaten (Konsolen-Befehle)

Folgende Pakete zur Konvertierung, Bearbeitung und Organisation von grafischen Daten über Konsolen-Befehle sind mir aufgefallen:

Tabelle 11.19. Liste von Werkzeugen für Grafikdaten (Konsolen-Befehle)

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`imagemagick` | V:7, I:275 | 81 | image(bitmap) | Programme zur Bildbearbeitung
`graphicsmagick` | V:1.0, I:8.8 | 5945 | image(bitmap) | Programme zur Bildbearbeitung (Abspaltung von `imagemagick`)
`netpbm` | V:26, I:285 | 8435 | image(bitmap) | Werkzeuge zur Grafikkonvertierung
`libheif-examples` | V:0.3, I:3.6 | 503 | heif→jpeg(bitmap) | Konvertieren des High Efficiency Image File Formats (HEIF) in das JPEG-, PNG- oder Y4M-Format mit dem Befehl heif-convert(1)
`icoutils` | V:3, I:33 | 221 | png ↔ ico(bitmap) | Konvertieren von MS-Windows-Icons und -Cursor in das und vom PNG-Format (Favicons)
`pstoedit` | V:1, I:37 | 1075 | ps/pdf → image(vector) | PostScript- und PDF-Dateien in editierbare Vector-Grafiken (SVG) konvertieren
`libwmf-bin` | V:4, I:81 | 149 | Windows/image(vector) | Konvertierungswerkzeuge für Windows-Metadaten (Vector-Grafiken)
`fig2sxd` | V:0.01, I:0.18 | 158 | fig → sxd(vector) | XFig-Dateien in das OpenOffice.org-Draw-Format konvertieren
`unpaper` | V:2, I:17 | 417 | image → image | Werkzeug zum Nachbearbeiten von eingescannten Seiten für OCR
`tesseract-ocr` | V:8, I:35 | 2209 | image → text | freie OCR-Software basierend auf HPs kommerzieller OCR-Engine
`tesseract-ocr-eng` | V:8, I:35 | 4032 | image → text | OCR-Engine-Daten: tesseract-ocr-Sprachdateien für englischen Text
`ocrad` | V:0.3, I:2.5 | 608 | image → text | freie OCR-Software
`exif` | V:3, I:51 | 335 | image(Exif) | Befehlszeilen-Werkzeug, um EXIF-Informationen von JPEG-Dateien anzuzeigen
`exiv2` | V:2, I:20 | 429 | image(Exif) | Werkzeug zur Bearbeitung von Exif-/IPTC-Metadaten
`exiftran` | V:1, I:11 | 81 | image(Exif) | Programm für die Umwandlung der JPEG-Bilder von Digitalkameras
`exiftags` | V:0.2, I:2.8 | 309 | image(Exif) | Werkzeug, um Exif-Informationen aus Digitalkamera-JPEG-Dateien auszulesen
`exifprobe` | V:0.2, I:2.3 | 506 | image(Exif) | Metadaten aus Digitalbildern auslesen
`dcraw` | V:0.8, I:7.7 | 428 | image(Raw) → ppm | Dekodierer für Digitalkamerabilder im RAW-Format
`findimagedupes` | V:0.1, I:1.1 | 76 | image → fingerprint | Visuell ähnliche oder doppelte Bilder finden
`ale` | V:0.01, I:0.16 | 850 | image → image | Bilder zusammenfügen, um die Wiedergabetreue zu erhöhen oder Mosaike zu erzeugen
`imageindex` | V:0.1, I:1.3 | 143 | image(Exif) → html | Erzeugen von statischen HTML-Galerien aus Bildern
`outguess` | V:0.1, I:1.1 | 230 | jpeg,png | universelles Steganographie-Werkzeug
`jpegoptim` | V:0.6, I:6.2 | 59 | jpeg | Optimieren von JPEG-Dateien
`optipng` | V:2, I:40 | 187 | png | Optimieren von PNG-Dateien, verlustfreie Kompression
`pngquant` | V:1, I:12 | 62 | png | Optimieren von PNG-Dateien, verlustbehaftete Kompression

## 11.7. Verschiedene Datenkonvertierungen

Es gibt viele andere Programme zum Konvertieren von Daten. Folgende Pakete habe ich über den regulären Ausdruck "`~Guse::converting`" in aptitude(8) gefunden (Näheres dazu in Abschnitt 2.2.6, „Optionen für Suchmethoden mit aptitude“):

Tabelle 11.20. Liste verschiedener Werkzeuge zur Datenkonvertierung

Paket | Popcon | Größe | Schlüsselwort | Beschreibung
--- | --- | --- | --- | ---
`alien` | V:1, I:13 | 150 | rpm/tgz → deb | Programm zur Konvertierung von fremden Software-Paketen in das Debian-Paketformat
`freepwing` | I:0.02 | 447 | EB → EPWING | Konvertierer von "Electric Book" (beliebt in Japan) in ein separates JIS X 4081-Format (eine Untermenge von EPWING V1)
`calibre` | V:7, I:26 | 69924 | alle → EPUB | E-Book-Konvertierer und Bibliotheksverwaltung

Sie können die Daten aus einem RPM-Archiv auch mit folgendem Befehl extrahieren:

    $ rpm2cpio file.src.rpm | cpio --extract

Kapitel 10. Datenmanagement |  | Kapitel 12. Programmierung