Chapitre 11. Conversion de données

Table des matières

11.1. Outils de conversion de données textuelles
11.1.1. Convertir un fichier texte avec iconv
11.1.2. Vérifier que les fichiers sont codés en UTF-8 avec iconv
11.1.3. Convertir les noms de fichiers avec iconv
11.1.4. Convertir les fins de ligne (EOL)
11.1.5. Convertir les tabulations (TAB)
11.1.6. Éditeurs avec conversion automatique
11.1.7. Extraire du texte brut
11.1.8. Mettre en évidence et formater des données en texte brut
11.2. Données XML
11.2.1. Conseils de base pour XML
11.2.2. Traitement XML
11.2.3. Extraire des données XML
11.3. Données imprimables
11.3.1. Ghostscript
11.3.2. Fusionner deux fichiers PS ou PDF
11.3.3. Utilitaires pour les données imprimables
11.3.4. Imprimer avec CUPS
11.4. Composition
11.4.1. Composition roff
11.4.2. TeX/LaTeX
11.4.3. Imprimer convenablement une page de manuel
11.4.4. Créer une page de manuel
11.5. La conversion de données de courrier électronique
11.5.1. Bases concernant les données de courrier électroniques
11.6. Outils de données graphiques
11.7. Diverses conversions de données

Description des outils et astuces pour convertir différents formats de données sur un système Debian.

Les outils basés sur des standards sont de très bonne qualité mais la prise en charge des formats propriétaires est limités.

11.1. Outils de conversion de données textuelles

Mes yeux ont été attirés par les paquets suivants de conversions de données textuelles :

Tableau 11.1. Liste des outils de conversion de texte

paquet popcon taille mot clé description
libc6 * V:97, I:99 10012 jeu de caractères convertisseur de codage de texte entre différents paramètres linguistiques à l’aide d'iconv(1) (fondamental)
recode * V:1.5, I:7 772 charset+eol convertisseur de codage de texte entre différents paramètres linguistiques (flexible avec plus d'alias et de fonctionnalités)
konwert * V:0.4, I:4 192 jeu de caractères text encoding converter between locales (le luxe)
nkf * V:0.2, I:2 300 jeu de caractères jeux de caractères pour le japonais
tcs * V:0.02, I:0.14 544 jeu de caractères jeu de caractères du traducteur
unaccent * V:0.01, I:0.09 76 jeu de caractères remplacer les lettres accentuées par leur équivalent accentué
tofrodos * V:1.1, I:7 48 eol (in de ligne) convertisseur de format de texte entre DOS et Unix : fromdos(1) et and todos(1)
macutils * V:0.05, I:0.5 320 eol (in de ligne) convertisseur de format de texte entre Macintosh et Unix :frommac(1) et tomac(1)

11.1.1. Convertir un fichier texte avec iconv

[Astuce] Astuce

iconv(1) fait partie du paquet libc6 et est toujours disponible sur pratiquement tous les système pour permettre la conversion des codages de caractères.

Vous pouvez convertir les codages de caractères d'un fichier texte par iconv(1) en effectuant ce qui suite :

$ iconv -f codage1 -t codage2 entrée.txt >sortie.txt

La valeur des codage n'est pas sensible à la casse et ignore « -  » et « _ » pour la correspondance. On peut vérifier quels sont les codage pris en charge à l’aide de la commande « iconv -l ».

Tableau 11.2. Liste de valeurs de codage et leur utilisation

valeur de codage utilisation
ASCII. American Standard Code for Information Interchange (Code américain standard pour l’échange d'informations), code sur 7 bits sans caractère accentué
UTF-8 norme actuelle multi-langues pour tous les systèmes d'exploitation modernes
ISO-8859-1 ancienne norme pour les langues d'Europe de l’ouest, ASCII + lettres accentuées
ISO-8859-2 ancienne norme pour les langues d'Europe de l’est, ASCII + lettres accentuées
ISO-8859-15 ancienne norme pour les langues d'Europe de l’ouest, ISO-8859-1 avec le signe euro
CP850 page de code 850, caractères de DOS Microsoft avec graphiques pour les langues de l’Europe de l’est, variante de ISO-8859-1
CP932 page de code 932, variante style Microsoft Windows de Shift-JIS pour le japonais
CP936 page de code 936, variante style Microsoft Windows de GB2312, GBK ou GB18030 pour le chinois simplifié
CP949 page de code 949, variante style Microsoft Windows de EUC-KR de «  Unified Hangul Code » pour le coréen
CP950 page de code 950, variante style Microsoft Windows de Big5 pour le chinois traditionnel
CP1251 page de code 1251, encodage de style Microsoft Windows pour l’alphabet cyrillique
CP1252 page de code 1252, variante style Microsoft Windows de ISO-8859-15 pour les langues d'Europe de l’ouest
KOI8-R ancienne norme UNIX de russe pour l’alphabet cyrillique
ISO-2022-JP codage standard du courrier électronique japonais n'utilisant que des codes à 7 bits
eucJP ancien code UNIX de japonais sur 8 bits et complètement différent de Shift-JIS
Shift-JIS norme JIS X 0208 Annexe 1 pour le japonais (voir CP932)

[Note] Note

Certains codages ne sont pris en compte que pour la conversion de données et ne sont pas utilisés en tant que valeur de paramètre linguistique (Section 8.3.1, « Bases du codage »).

Pour les jeux de caractères qui tiennent dans un seul octet tels que les jeux de caractères ASCII et ISO-8859, le codage des caractères signifie à peu près la même chose que le jeu de caractères.

Pour les jeux de caractères ayant de nombreux caractères tels que JIS X 0213 pour le japonais ou Universal Character Set (UCS, Unicode, ISO-10646-1) (jeu de caractère universel) pour pratiquement toutes les langues, il y a de nombreux schémas de codage pour les insérer dans les séquences d'octets de données.

Pour ceux-ci, il y a une différence claire entre le jeu de caractères et le codage des caractères.

Page de code est utilisée comme synonyme de table de codage de caractères pour certaines d'entre-elles spécifiques au fournisseur.

[Note] Note

Veuillez remarquer que la plupart des systèmes de codage partagent le même code avec ASCII pour les caractères sur 7 bits. Mais il y a quelques exceptions, lors de la conversion de programmes C et des données d'URL anciens en japonais depuis ce qui est parfois appelé format de codage shift-JIS vers le format UTF-8, utilisez « CP932 » comme nom de codage plutôt que « shift-JIS » afin d'obtenir le résultat attendu : 0x5C → « \ » et 0x7E → « ~ ». Sinon, ils seront convertis vers les mauvais caractères.

[Astuce] Astuce

On peut aussi utiliser recode(1) qui offre plus de fonctionnalités que celles combinées de iconv(1), fromdos(1), todos(1), frommac(1) et tomac(1). Pour plus de détails, voir « info recode ».

11.1.2. Vérifier que les fichiers sont codés en UTF-8 avec iconv

Vous pouvez vérifier si un fichier texte est codé en UTF-8 à l’aide d’iconv(1) en effectuant ce qui suite :

$ iconv -f utf8 -t utf8 input.txt >/dev/null || echo "Trouvé non-UTF-8"
[Astuce] Astuce

Utilisez l’option « --verbose » dans les exemples ci-dessus pour trouver le premier caractère non UTF-8.

11.1.3. Convertir les noms de fichiers avec iconv

Voici un exemple de script pour convertir le codage des noms de fichiers, dans un seul répertoire, depuis celui créé par un ancien système d'exploitation vers celui d'un système d'exploitation moderne en UTF-8.

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

La variable « $ENCDN » devra être définie à la valeur du codage venant de Tableau 11.2, « Liste de valeurs de codage et leur utilisation ».

Pour les cas plus compliqués, veuillez monter le système de fichiers (par exemple une partition d'un disque dur) contenant de tels noms de fichiers avec le codage correct comme option de mount(8) (voir Section 8.3.6, « Coder les noms de fichiers ») et copier son contenu complet vers un autre système de fichiers monté en UTF-8 avec la commande « cp -a ».

11.1.4. Convertir les fins de ligne (EOL)

Le format de fichier texte, particulièrement le code de fin de ligne (EOL), dépend de la plateforme.

Tableau 11.3. Liste des styles d'EOL pour différentes plateformes

plateforme code pour EOL contrôle décimal hexadécimal
Debian (unix) LF ^J 10 0A
MSDOS et Windows CR-LF ^M^J 13 10 0D 0A
Apple Macintosh CR ^M 13 0D

Les programmes de conversion du format des fins de lignes (EOL), fromdos(1), todos(1), frommac(1) et tomac(1) sont assez pratiques. recode(1) peut aussi être utile.

[Note] Note

Certaines données Some sur un système Debian, telles que les données de la page wiki du paquet python-moinmoin, utilisent le CR-LF de style MSDOS style CR-LF comme code de fin de ligne (EOL). La règle précédente n'est donc que générale.

[Note] Note

La plupart des éditeurs (par exemple vim, emacs, gedit, …) peuvent prendre en compte de manière transparente les fichiers ayant une fin de ligne (EOL) de style MSDOS.

[Astuce] Astuce

L’utilisation de « sed -e '/\r$/!s/$/\r/' » en remplacement de todos(1) est préférable lorsque vous désirez unifier le style de caractère de fin de ligne vers le style MSDOS depuis un style mixte MSDOS et Unix. (Par exemple, après avoir fusionné deux fichiers de style MSDOS avec diff3(1).) Ceci parce que todos ajoute un retour charriot (CR) à toutes les lignes.

11.1.5. Convertir les tabulations (TAB)

Il y a quelques programmes spécialisés dans la conversion des codes de tabulations.

Tableau 11.4. Liste des commande de conversion de TAB des paquets bsdmainutils et coreutils

fonction bsdmainutils coreutils
étendre les tabulations en espaces « col -x » expand
convertir les espaces en tabulation « col -h » unexpand

indent(1) du paquet indent reformate complètement les espaces dans un programme en C.

Des programme d'édition tels que vim et emacs peuvent aussi être utilisés pour la conversion des tabulations. Par exemple avec vim, vous pouvez étendre les tabulation avec la séquence de commandes « :set expandtab » et « :%retab ». Vous pouvez revenir en arrière de cette conversion par la séquence de commandes « :set noexpandtab » et « :%retab! ».

11.1.6. Éditeurs avec conversion automatique

Les éditeurs de textes modernes et intelligents comme le programme vim sont assez habiles et prennent assez bien en compte les système de codage des caractères et tous les formats de fichiers. Vous devriez utiliser ces éditeurs avec les paramètres linguistiques UTF-8 dans une console compatible avec UTF-8 pour une meilleure compatibilité.

Un ancien fichier texte Unix d'Europe de l’ouest, « u-file.txt » enregistré dans le codage latin1 (iso-8859-1) peut être édité avec vim de la manière suivante :

$ vim u-file.txt

Ceci est possible car le mécanisme d'auto-détection du codage du fichier dans vim suppose d'abord que le codage est UTF-8 et, s'il échoue, suppose qu'il est latin1.

Un ancien fichier texte en polonais, « pu-file.txt », enregistré avec le codage latin2 (iso-8859-2) peut être édité avec vim de la manière suivante :

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

Un ancien fichier texte Unix en japonais, « ju-file.txt », enregistré avec le codage eucJP peut être édité avec vim de la manière suivante :

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

Un ancien fichier MS-Windows en japonais, « jw-file.txt », enregistré dans le codage appelé shift-JIS (plus précisément : CP932) peut être édité avec vim de la manière suivante :

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

Lorsqu'un fichier est ouvert avec les options « ++enc » et « ++ff », « :w » sur la ligne de commandes de Vim l’enregistre dans son format d'origine et écrase le fichier d'origine. Vous pouvez aussi indiquer le format d'enregistrement et le nom du fichier sur la ligne de commandes de Vim, par exemple, « :w ++enc=utf8 nouveau.txt ».

Veuillez vous rapporter à mbyte.txt « multi-byte text support » dans l’aide en ligne de vim et Tableau 11.2, « Liste de valeurs de codage et leur utilisation » pour les valeurs de paramètres linguistiques utilisés avec « ++enc ».

La famille de programmes emacs peut effectuer des fonctions équivalentes.

11.1.7. Extraire du texte brut

Ce qui suit permet de lire une page web sous forme de fichier texte. C'est très utile pour copier des informations de configuration depuis le Web ou pour appliquer des outils textuels de base d’Unix comme grep(1) à la page web .

$ w3m -dump http://www.site-distant.com/help-info.html >fichier-texte

De la même manière, vous pouvez extraire des données en texte brut vers d'autres formats en utilisant ce qui suit :.

Tableau 11.5. Liste d'outils pour extraite des données en texte brut

paquet popcon taille mot clé fonction
w3m * V:24, I:84 1992 html→texte convertisseur HTML vers texte avec la commande « w3m -dump »
html2text * V:15, I:37 248 html→texte convertisseur avancé HTML vers texte (ISO 8859-1)
lynx * I:22 252 html→texte convertisseur HTML vers texte avec la commande « lynx -dump »
elinks * V:2, I:5 1448 html→texte convertisseur HTML vers texte avec la commande « elinks -dump »
links * V:3, I:9 1380 html→texte convertisseur HTML vers texte avec la commande « links -dump »
links2 * V:0.7, I:3 3288 html→texte convertisseur HTML vers texte avec la commande « links2 -dump »
antiword * V:1.3, I:2 796 MSWord→texte,ps convertir des fichiers MSWord en texte brut ou en ps
catdoc * V:1.0, I:2 2580 MSWord→texte,TeX convertir les fichier MSWord en texte brut ou en TeX
pstotext * V:0.8, I:1.4 148 ps/pdf→texte extraire du texte depuis des fichiers PostScript et PDF
unhtml * V:0.02, I:0.14 76 html→texte supprimer les balise d'un fichier HTML
odt2txt * V:0.8, I:1.4 100 odt→texte convertisseur du texte OpenDocument vers texte
wpd2sxw * V:0.02, I:0.13 156 WordPerfect→sxw convertisseur de documents de WordPerfect vers OpenOffice.org/StarOffice

11.1.8. Mettre en évidence et formater des données en texte brut

Vous pouvez mettre en évidence et formater des données en texte brut de la manière suivante :

Tableau 11.6. Liste des outils pour mettre en évidence des données de texte brut

paquet popcon taille mot clé description
vim-runtime * V:3, I:38 25864 mise en évidence MACRO Vim pour convertir du code source en HTML avec « :source $VIMRUNTIME/syntax/html.vim »
cxref * V:0.05, I:0.4 1252 c→html convertisseur pour les programmes converter C vers latex et HTML (langage C)
src2tex * V:0.03, I:0.2 1968 mise en évidence convertit de nombreux codes sources en TeX (langage C)
source-highlight * V:0.14, I:1.1 2164 mise en évidence convertit de nombreux codes source vers des fichiers HTML, XHTML, LaTeX, Texinfo, séquences d'échappement en couleur ANSI et DocBook files avec mise en évidence (C++)
highlight * V:0.2, I:1.3 756 mise en évidence convertit de nombreux codes sources en fichiers HTML, XHTML, RTF, LaTeX, TeX ou XSL-FO avec mise en évidence (C++)
grc * V:0.05, I:0.12 164 texte→couleur coloriseur générique pour n'importe quoi (Python)
txt2html * V:0.08, I:0.5 296 texte→html convertisseur de texte vers HTML (Perl)
markdown * V:0.07, I:0.4 96 texte→html formateur de documents textes Markdown vers (X)HTML (Perl)
asciidoc * V:0.15, I:1.1 3028 texte→tout format formateur de documents textes AsciiDoc vers XML/HTML (Python)
python-docutils * V:0.4, I:3 5740 texte→tout format formateur de documents ReStructured Text vers XML (Python)
txt2tags * V:0.06, I:0.3 1028 texte→tout format conversion de documents de texte vers HTML, SGML, LaTeX, page de manuel, MoinMoin, Magic Point et PageMaker (Python)
udo * V:0.01, I:0.07 556 texte→tout format document universel - utilitaire de traitement du texte (language C)
stx2any * V:0.00, I:0.04 484 texte→tout format convertisseur de documents depuis un texte brut structuré vers d'autres formats (m4)
rest2web * V:0.01, I:0.08 576 texte→html convertisseur de documents depuis ReStructured Text vers html (Python)
aft * V:0.01, I:0.06 340 texte→tout format système de préparation de document de « forme libre » (Perl)
yodl * V:0.01, I:0.06 564 texte→tout format langage de pré-document et outils pour le manipuler
sdf * V:0.01, I:0.08 1940 texte→tout format analyseur simple de documents (Perl)
sisu * V:0.01, I:0.07 14384 texte→tout format infrastructure de structuration, de publication et de recherche de documents (Ruby)

11.2. Données XML

Le langage de balisage extensible (« The Extensible Markup Language (XML) » est un langage de balisage des documents dont les informations sont structurées.

Voir une introduction sur XML.COM.

11.2.1. Conseils de base pour XML

Le texte en XML ressemble un peu à HTML. Il vous permet de gérer de nombreux format de sortie pour un document. Un système XML facile est le paquet docbook-xsl qui est utilisé ici.

Chaque fichier XML commence par la déclaration XML standard suivante :

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

La syntaxe de base d'un élément XML est balisée de la manière suivante :

<name attribute="value">contenu</nom>

Un élément XML dont le contenu est vide est balisé de la façon raccourcie suivante :

<name attribute="value"/>

« attribute="value" » dans les exemples ci-dessus es optionnel.

L’action commentaire en XML est balisée comme suit :

<!-- comment -->

En plus d'ajouter des balises, XML demande des conversion mineures de contenu en utilisant des entités prédéfinies pour les caractères suivants :

Tableau 11.7. Liste des entités XML prédéfinies

entité prédéfinie caractère devant être converti
&quot; " : double apostrophe
&apos; ' : apostrophe
&lt; < : inférieur à
&gt; > : supérieur à
&amp; & : esperluette

[Attention] Attention

« < » ou « & » ne peuvent pas être utilisés dans des attributs ni des éléments.

[Note] Note

Lorsqu'on utilise des entités définies par l’utilisateur de style SGML, par exemple « &some-tag: », la première définition prend le pas sur les suivantes . La définition de l’entité est exprimée par « <!ENTITY une-balise "valeur entité">".

[Note] Note

Dans que la balisage XML est fait de manière cohérence avec un jeu particulier de nom de balises (soit certaines données comme valeur de contenu ou d'attribut), la conversion vers un autre XML est une tâche triviale en utilisant Extensible Stylesheet Language Transformations (XSLT).

11.2.2. Traitement XML

Il existe de nombreux outils pour traiter les fichiers XML tels quele langage extensible de feuilles de style (« the Extensible Stylesheet Language XSL «).

De base, une fois créé un fichier XML correctement formaté, vous pouvez le convertir vers n'importe quel format en utilisant le langage extensible de transformation des feuilles de style (XSLT) (« Extensible Stylesheet Language Transformations  »).

Le Langage extensible de feuilles de style pour le formatage des objets (XSL-FO) (« Extensible Stylesheet Language for Formatting Object  » est censé être la solution au formatage. Le paquet fop se trouve encore dans l’archive contrib de Debian (pas dans main). Le code LaTeX est donc habituellement créé depuis XML en utilisant XSLT, et le système LaTeX est utilisé pour créer des fichiers imprimables comme DVI, PostScript et PDF.

Tableau 11.8. Liste d'outils XML

paquet popcon taille mot clé description
docbook-xml * I:47 2488 xml Définition de type de document XML (DTD) pour DocBook
xsltproc * V:4, I:46 152 xslt processeur en ligne de commandes XSLT (XML→ XML, HTML, texte brut, etc.)
docbook-xsl * V:0.5, I:7 12792 xml/xslt feuilles de style XSL pour le traitement de DocBook XML vers divers formats de sortie avec XSLT
xmlto * V:0.3, I:2 268 xml/xslt convertisseur XML-vers-tout avec XSLT
dblatex * V:0.2, I:2 7340 xml/xslt convertir les fichiers Docbook en documents DVI, PostScript, PDF avec XSLT
fop * V:0.3, I:2 2280 xml/xsl-fo convertir les fichiers Docbook XML en PDF

Comme XML est un sous-ensemble du Langage généralisé de balisage ( Standard Generalized Markup Language SGML »), il peut être traité par les nombreux outils disponibles pourSGML, comme Document Style Semantics and Specification Language (DSSSL).

Tableau 11.9. Liste des outils DSSL

paquet popcon taille mot clé description
openjade * V:0.4, I:3 1212 dsssl processeur DSSSL à la norme ISO/IEC 10179:1996 DSSSL (le plus récent)
openjade1.3 * V:0.02, I:0.14 2336 dsssl processeur DSSSL à la norme ISO/IEC 10179:1996 DSSSL (séries 1.3.x)
jade * V:0.3, I:2 1056 dsssl processeur DSSSL original de James Clark (séries 1.2.x)
docbook-dsssl * V:0.5, I:4 3100 xml/dsssl feuilles de style DSSSL pour le traitement des DocBook XML vers divers formats de sortie avec DSSSL
docbook-utils * V:0.2, I:2 440 xml/dsssl utilitaires pour les fichiers DocBook y-compris la conversion avec DSSSL vers d'autres formats (HTML, RTF, PS, man, PDF) avec des commandes docbook2*
sgml2x * V:0.00, I:0.06 216 SGML/dsssl convertisseur depuis SGML et XML utilisant les feuilles de style DSSSL

[Astuce] Astuce

yelp de GNOME est parfois pratique pour lire les fichiers XML DocBook directement car il effectue un rendu propre sous X.

11.2.3. Extraire des données XML

Vous pouvez extraire des données HTML ou XML depuis d'autres formats en utilisant ce qui suit :

Tableau 11.10. Liste d'outils d'extraction de données XML

paquet popcon taille mot clé description
wv * V:1.3, I:2 2116 MSWord→n'importe quoi convertisseur de document depuis Microsoft Word vers HTML, LaTeX, etc.
texi2html * V:0.3, I:2 2076 texi→html convertisseur de Texinfo vers HTML
man2html * V:0.2, I:1.2 372 manpage→html convertisseur de page de manuel en HTML (prise en charge de CGI)
tex4ht * V:0.3, I:2 924 tex↔html convertisseur entre (La)TeX et HTML
xlhtml * V:0.5, I:1.1 184 MSExcel→html convertisseur de MSExcel .xls vers HTML
ppthtml * V:0.5, I:1.1 120 MSPowerPoint→html convertisseur de MSPowerPoint vers HTML
unrtf * V:0.4, I:0.9 224 rtf→html convertisseur de documents de RTF vers HTML, etc
info2www * V:0.6, I:1.2 156 info→html convertisseur depuis GNU info vers HTML (prise en charge de CGI)
ooo2dbk * V:0.03, I:0.16 941 sxw→xml convertisseur de documents OpenOffice.org SXW en DocBook XML
wp2x * V:0.01, I:0.07 240 WordPerfect→any fichiers WordPerfect 5.0 et 5.1 vers TeX, LaTeX, troff, GML et HTML
doclifter * V:0.00, I:0.03 424 troff→xml convertisseur de troff vers DocBook XML

Vous pouvez convertir les fichiers HTML non-XML en XHTML qui est une instance XML correctement formatée. XHTML peut être traité par les outils XML.

Tableau 11.11. Liste d'outils sympa d'impression XML

paquet popcon taille mot clé description
libxml2-utils * V:3, I:49 160 xml↔html↔xhtml outil XML en ligne de commandes xmllint(1) (vérification de la syntaxe, reformatage, lint, …)
tidy * V:1.0, I:9 108 xml↔html↔xhtml vérificateur de syntaxe et reformateur HTML

Une fois qu'un fichier XML propre est créé, vous pouvez utiliser la technologie XSLT pour extraire des données dans le contexte de balisage, etc.

11.3. Données imprimables

Sur un système Debian, les données imprimables sont définies dans le format PostScript. Common Unix Printing System (CUPS) utilise Ghostscript en tant que programme de tramage « rasterisation » pour les imprimantes non-PostScript.

11.3.1. Ghostscript

Le cœur de la manipulation des données imprimables est l’interpréteur Ghostscript PostScript (PS) qui génère une image tramée (« raster image »).

La licence de la dernière version amont de Ghostscript par Artifex a été modifiée d'AFPL ver GPL et fusionnée avec les dernières modifications de version d'ESP telles que celles relatives à CUPS version 8.60 sous forme d'une version unifiée.

Tableau 11.12. Liste des interpréteurs Ghostscript PostScript

paquet popcon taille description
ghostscript * V:18, I:56 6716 L’interpréteur GPLGhostscript PostScript/PDF
ghostscript-x * V:13, I:28 220 interpréteur GPL Ghostscript PostScript/PDF - prise en charge de l’affichage X
gs-cjk-resource * V:0.04, I:0.4 4528 fichiers de ressources pour gs-cjk, extension CJK-TrueType de Ghostscript
cmap-adobe-cns1 * V:0.03, I:0.3 1572 CMaps pour Adobe-CNS1 (pour la prise en charge du chinois traditionnel)
cmap-adobe-gb1 * V:0.03, I:0.3 1552 CMaps pour Adobe-GB1 (pour la prise en charge du chinois simplifié)
cmap-adobe-japan1 * V:0.08, I:0.7 2428 CMaps pour Adobe-Japan1 (pour la prise en charge du japonais standard)
cmap-adobe-japan2 * I:0.4 416 CMaps pour Adobe-Japan2 (pour un prise en charge étendue du japonais)
cmap-adobe-korea1 * V:0.01, I:0.19 872 CMaps pour Adobe-Korea1 (pour la prise en charge du coréen)
libpoppler5 * V:4, I:21 2368 bibliothèque de rendu PDF basée sur le visualisateur PDF xpdf
libpoppler-glib4 * V:7, I:19 504 bibliothèque de rendu PDF (bibliothèque partagée basée sur GLib)
poppler-data * I:3 12232 CMaps pour PDF la bibliothèque de rendu (pour la prise en charge de CJK : Adobe-*)

[Astuce] Astuce

« gs -h » permet d'afficher la configuration de Ghostscript.

11.3.2. Fusionner deux fichiers PS ou PDF

Vous pouvez fusionner deux fichiers PostScript (PS) ou Portable Document Format (PDF) en utilisant gs(1) de Ghostscript.

$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite -sFichierSortie=blabla.ps -f toto1.ps toto2.ps
$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sFichierSortie=blabla.pdf -f toto1.pdf toto2.pdf
[Note] Note

Le format PDF qui est un format imprimable multi-plateformes largement utilisé, est essentiellement un format PS compressé avec quelques fonctionnalités et extensions supplémentaires .

[Astuce] Astuce

En ligne de commandes, psmerge(1) et d'autres commandes du paquet psutils sont utille pour manipuler des documents PostScript. Les commandes issues du pdfjam fonctionnent de manière similaires pour la manipulation de documents PDF. pdftk(1) issu du paquet pdftk est aussi utile pour la manipulation de documents PDF.

11.3.3. Utilitaires pour les données imprimables

Les paquets suivants fournissant des utilitaires pour les données imprimables ont attiré mon attention :

Tableau 11.13. Liste des utilitaires pour les données imprimables

paquet popcon taille mot clé description
poppler-utils * V:8, I:49 536 pdf→ps,text,… utilitaires PDF :: pdftops, pdfinfo, pdfimages, pdftotext, pdffonts
psutils * V:3, I:21 380 ps→ps outils de conversion de document PostScript
poster * V:1.2, I:9 80 ps→ps créer des posters de grandes dimensions à partir de pages PostScript
xpdf-utils * V:0.9, I:4 76 pdf→ps,text,… utilitaires PDF :: pdftops, pdfinfo, pdfimages, pdftotext, pdffonts
enscript * V:1.6, I:14 2464 text→ps, html, rtf convertir dur text ASCII en PostScript, HTML, RTF ou Pretty-Print
a2ps * V:1.7, I:8 4292 text→ps Convertisseur de « N'importe quoi vers PostScript » et imprimeur élégant
pdftk * V:1.0, I:5 200 pdf→pdf outil de conversion de documents PDF :: pdftk
mpage * V:0.18, I:1.5 224 text,ps→ps imprimer plusieurs pages par feuille
html2ps * V:0.2, I:1.7 260 html→ps convertisseur de HTML vers PostScript
pdfjam * V:0.2, I:1.8 228 pdf→pdf outils de conversions de documents PDF : pdf90, pdfjoin et pdfnup
gnuhtml2latex * V:0.07, I:0.6 60 html→latex convertisseur de html vers latex
latex2rtf * V:0.14, I:1.0 508 latex→rtf convertir des documents de LaTeX en RTF qui puissent être lus par MS Word
ps2eps * V:1.3, I:12 116 ps→eps convertisseur de PostScript vers EPS (PostScript encapsulé)
e2ps * V:0.01, I:0.10 188 text→ps convertisseur de texte vers vers PostScript avec la prise en charge du codage japonais
impose+ * V:0.03, I:0.2 180 ps→ps Utilitaires PostScript
trueprint * V:0.02, I:0.13 188 text→ps imprime élégamment de nombreux codes source (C, C++, Java, Pascal, Perl, Pike, Sh, et Verilog) vers PostScript. (langage C)
pdf2svg * V:0.10, I:0.5 60 ps→svg convertisseur de PDF vers le format Scalable vector graphics (« SVG »)
pdftoipe * V:0.02, I:0.16 88 ps→ipe convertisseur de PDF vers le format IPE d'XML

11.3.4. Imprimer avec CUPS

Les commandes lp(1) et lpr(1) proposées par le Common Unix Printing System (CUPS) fournissent toutes deux des options de personnalisation des données imprimables.

Vous pouvez imprimer 3 copies d'un fichier en utilisant une des commandes suivantes :

$ lp -n 3 -o Collate=True NomFichier
$ lpr -#3 -o Collate=True NomFichier

Vous pouvez personnaliser davantage le fonctionnement de l’imprimante en utilisant des options d'impression telles que « -o number-up=2 », « -o page-set=even », « -o page-set=odd », « -o scaling=200 », « -o natural-scaling=200 », etc., documentée sur Impression et options en ligne de commande.

11.4. Composition

Le programme Unix troff, développé à l’origine par AT&T, peut être utilisé pour une composition simple. Il est habituellement utilisé pour créer des pages de manuel.

TeX, créé par Donald Knuth, est un outil très puissant de composition et c'est le standard de fait. LaTeX, écrit à l’origine par Leslie Lamport permet un accès de haut niveau à la puissance de TeX.

Tableau 11.14. Liste des outils de typographie

paquet popcon taille mot clé description
texlive * V:0.5, I:9 124 (La)TeX système TeX pour la composition, l’aperçu et l’impression
groff * V:0.9, I:7 9116 troff système de formatage de texte GNU troff

11.4.1. Composition roff

Traditionnellement, roff est le système de traitement de texte principal sous Unix. Voir 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), et« info groff ».

Vous pouvez lire pu imprimer un bon didacticiel et document de référence sur la macro « -me » dans « /usr/share/doc/groff/ » en installant le paquet groff.

[Astuce] Astuce

« groff -Tascii -me - » produit une sortie en texte brut avec du code d'échappement ANSI. Si vous désirez obtenir une sortie semblable à une page de manuel avec de nombreux « ^H » et « _ », utilisez plutôt « GROFF_NO_SGR=1 groff -Tascii -me - ».

[Astuce] Astuce

Pour supprimer les « ^H » et les « _ » d'un fichier texte issu de groff, filtrez le par « col -b -x ».

11.4.2. TeX/LaTeX

La distribution logicielle TeX Live offre un système TeX complet. Le méta-paquet texlive fournit une sélection acceptable des paquets de TeX Live qui devraitsuffire aux tâches les plus courantes.

De nombreuses références sont disponibles pour TeX et LaTeX :

  • The teTeX HOWTO : le guide local de teTeX sous Linux ;
  • tex(1) ;
  • latex(1) ;
  • « The TeXbook », par Donald E. Knuth, (Addison-Wesley) ;
  • « LaTeX - A Document Preparation System », par Leslie Lamport, (Addison-Wesley) ;
  • « The LaTeX Companion », par Goossens, Mittelbach, Samarin, (Addison-Wesley).

C'est l’environnement de composition typographique le plus puissant. De nombreux processeurs SGML l’utilisent comme processeur de texte en « backend ». Lyx qu'on trouvera dans le paquet lyx et GNU TeXmacs qui provient du paquet texmacs offrent un environnement d'édition agréable en mode WYSIWYG pour LaTeX bien que nombreux sont ceux qui choisissentd'utiliser Emacs et Vim pour éditer les sources.

De nombreuses ressources sont disponibles en ligne :

Lorsque les documents deviennent plus importants, TeX cause parfois des erreurs.Vous devez augmenter la taille de l’espace dans « /etc/texmf/texmf.cnf » (ou, de manière plus rigoureuse, éditez « /etc/texmf/texmf.d/95NonPath » et lancez update-texmf(8)) afin de corriger ceci.

[Note] Note

Le source TeX de « The TeXbook » se trouve sur http://tug.ctan.org/tex-archive/systems/knuth/dist/tex/texbook.tex.

Ce fichier contient la plupart des macros nécessaires. J’ai entendu dire que vous pouvez traiter ce document avec tex(1) après avoir commenté les lignes 7 à 10 et ajouté « \input manmac \proofmodefalse ». Je recommande vivement l’achat de ce livre (et de tous les autres livres de Donald E. Knuth) plutôt que d'utiliser la version en ligne mais les source sont un très bon exemple d'entrée de TeX !

11.4.3. Imprimer convenablement une page de manuel

Vous pouvez imprimer convenablement une page de manuel en PostScript en utilisant l’une des commandes suivantes :

$ man -Tps une_page_de_manuel  lpr
$ man -Tps une_page_de_manuel | mpage -2 | lpr

Le deuxième exemple imprime deux pages par feuille.

11.4.4. Créer une page de manuel

Bien que l’écriture d'une page de manuel (manpage) dans le format troff brut soit possible, il existe quelques paquets facilitant cette tâche :

Tableau 11.15. Liste de paquets facilitant la création de pages de manuel

paquet popcon taille mot clé description
docbook-to-man * V:0.3, I:2 240 SGML→manpage macros de conversion de DocBook SGML vers roff man
help2man * V:0.13, I:1.1 376 text→manpage générateur automatique d'une pages de manuel depuis --help
info2man * V:0.02, I:0.15 204 info→manpage convertisseur depuis GNU info vers POD ou page de manuel
txt2man * V:0.02, I:0.2 88 text→manpage convertir du texte brut ASCII au format d'une page de manuel

11.5. La conversion de données de courrier électronique

Les paquets suivants, destinés à la conversion de données de courrier électronique, ont attirés mon attention :

Tableau 11.16. Liste de paquets facilitant la conversion de données de courrier électronique

paquet popcon taille mot clé description
sharutils * V:2, I:32 904 mail shar(1), unshar(1), uuencode(1), uudecode(1)
mpack * V:1.5, I:23 84 MIME encodeur et décodeur de messages MIME : mpack(1) et munpack(1)
tnef * V:0.8, I:1.5 164 ms-tnef dépaqueter des attachements MIME de type « application/ms-tnef » qui est un format propre à Microsoft
uudeview * V:0.17, I:1.6 132 mail encodeur et décodeur pour les formats suivants : uuencode, xxencode, BASE64, quoted printable et BinHex
readpst * V:0.04, I:0.3 228 PST convertir les fichiers Outlook PST files de Microsoft vers le format mbox

[Astuce] Astuce

Le serveur de protocole Internet d'accès au messages (« d'Internet Message Access Protocol ») version 4 (IMAP4) (voir Section 6.7, « serveur POP3/IMAP4 ») peut être utilisé pour déplacer des courriels depuis des systèmes de courriels propriétaires si le logiciel de courriel client peut aussi être configuré pour utiliser le serveur IMAP4.

11.5.1. Bases concernant les données de courrier électroniques

Les données (SMTP) de courrier électroniques doivent être limitées 7 bits. Les données binaires et les données textuelles sur 8 bits sont codées dans un format sur 7 bits avec Multipurpose Internet Mail Extensions (MIME) et la sélection du jeu de caractères (voir Section 8.3.1, « Bases du codage »).

Le format standard d'enregistrement du courrier électronique est formaté en « mbox » selon la RFC2822 (RFC822 mise à jour). Voir mbox(5) (fournie par le paquet mutt.

Pour les langues européennes, on utilise habituellement pour le courriel « Content-Transfer-Encoding: quoted-printable » avec le jeu de caractères ISO-8859-1 car il n'y a pas beaucoup de caractères de 8 bits. Si le texte européen est codé en UTF-8, on préférera utiliser « Content-Transfer-Encoding: quoted-printable » car ce sont essentiellement des données sur 7 bits.

Pour le japonais, « Content-Type: text/plain; charset=ISO-2022-JP » est habituellement utilisé pour le courriel afin de conserver le texte sur 7 bits. Mais les anciens systèmes Microsoft peuvent envoyer des données de courriel en Shift-JIS sans le déclarer proprement. Si le texte japonais est codé en UTF-8, on utilisera de préférence Base64 car il comporte de nombreuses données sur 8 bits. La situation des autres langues asiatiques est similaire.

[Note] Note

Pour les données de courriel non-Unix accessible par un logiciel client ne venant pas de Debian, il est possible de dialoguer avec le serveur IMAP4, il vous faudra peut-être les déplacer en lançant votre propre serveur IMAP4 (voir Section 6.7, « serveur POP3/IMAP4 »).

[Note] Note

Si vous utilisez d'autres formats d'enregistrement de courriel, les mettre dans le format mbox est une bonne première étape. Un programme client souple comme mutt(1) peut être pratique pour le faire.

Vous pouvez éclater le contenu d'une boîte à lettre en messages séparés en utilisant procmail(1) et formail(1).

Chaque message de courrier électronique peut être dépaqueté en utilisant munpack(1) qui provient du paquet mpack (ou d'autres outils spécialisés) afin d'en obtenir le contenu codé en MIME.

11.6. Outils de données graphiques

Les paquets suivants contenant des outils pour la conversion, l’édition et l’organisation de données graphiques ont attiré mon attention :

Tableau 11.17. Liste d'outils pour les données graphiques

paquet popcon taille mot clé description
gimp * V:12, I:44 13560 image (bitmap) Programme de manipulation d'images GNU ( GNU Image Manipulation Program »)
imagemagick * V:13, I:35 268 image (bitmap) programmes de manipulation d'images
graphicsmagick * V:1.6, I:3 4532 image (bitmap) programmes de manipulation d'images (compagnons d'imagemagick)
xsane * V:5, I:36 748 image (bitmap) Interface graphique X11 de SANE basée sur GTK+-based (Scanner Access Now Easy)
netpbm * V:4, I:29 4612 image (bitmap) outils de conversion graphique
icoutils * V:0.3, I:1.3 200 png↔ico (bitmap) convertit les icônes et curseurs de MS Windows de et vers des formats PNG (favicon.ico)
scribus * V:0.5, I:3 26888 ps/pdf/SVG/… éditeur DTP Scribus
openoffice.org-draw * V:18, I:40 10720 image (vectorielle) suite de bureautique OpenOffice.org - dessin
inkscape * V:15, I:32 87436 image (vectorielle) éditeur SVG (Scalable Vector Graphics)
dia-gnome * V:1.4, I:2 576 image (vectorielle) éditeur de diagrammes (GNOME)
dia * V:3, I:5 572 image (vectorielle) éditeur de diagrammes (Gtk)
xfig * V:2, I:4 1676 image (vectorielle) générer des des figures de manière interactives sous X11
pstoedit * V:1.9, I:16 708 ps/pdf→image (vectorielle) convertisseur de fichiers PostScript et PDF en graphiques vectoriels éditables (SVG)
libwmf-bin * V:1.4, I:13 68 Windows/image (vectorielle) outils de conversion de méta-fichiers Windows (données graphiques vectorielles)
fig2sxd * V:0.03, I:0.2 200 fig→sxd (vectorielle) conversion de fichiers XFig dans le format OpenOffice.org Draw
unpaper * V:0.2, I:1.7 736 image→image outil de post-traitement pour des pages numérisées pour OCR
tesseract-ocr * V:0.7, I:3 3196 image→texte logiciel OCR libre basé sur le moteur commercial OCR de HP
tesseract-ocr-eng * V:0.2, I:2 1752 image→texte moteur de données OCR : fichier de langue de tesseract-ocr pour le texte en anglais
gocr * V:0.8, I:5 492 image→texte logiciel OCR libre
ocrad * V:0.4, I:4 364 image→texte logiciel OCR libre
gtkam * V:0.3, I:1.7 1100 image (Exif) manipuler les fichier des images d'appareils photos numériques (GNOME) - interface graphique
gphoto2 * V:0.3, I:2 1008 image (Exif) manipuler les fichier des images d'appareils photo numériques (GNOME) - ligne de commandes
kamera * V:0.7, I:13 312 image (Exif) manipuler les fichier des images d'appareils photo numériques (KDE)
jhead * V:0.5, I:3 132 image (Exif) manipuler la partie non graphique des fichiers JPEG compatibles avec Exif (appareils photo numériques)
exif * V:0.2, I:1.7 184 image (Exif) utilitaire enligne de commandes pour afficher les informations EXIF contenues dans les fichiers JPEG
exiftags * V:0.14, I:0.9 248 image (Exif) utilitaire pour lire les balises Exif depuis un fichier JPEG d'appareil photo numérique
exiftran * V:0.4, I:3 56 image (Exif) transformer les images jpeg des appareil photo numériques
exifprobe * V:0.08, I:0.5 484 image (Exif) lire les méta-données des images numériques
dcraw * V:0.9, I:5 444 image (Raw)→ppm décoder les images brutes (« raw ») des appareils photo numériques
findimagedupes * V:0.06, I:0.4 140 image→fingerprint rechercher des images visuellement similaires ou dupliquées
ale * V:0.02, I:0.17 768 image→image assembler des images pour en améliorer la fidélité ou créer des mosaïques
imageindex * V:0.03, I:0.2 192 image (Exif)→html créer des galleries HTML statiques depuis des images
f-spot * V:0.5, I:1.8 9488 image (Exif) application de gestion personnelle de photos (GNOME)
bins * V:0.02, I:0.15 2008 image (Exif)→html créer des albums photos statiques en HTMM en utilisant XML et les balises EXIF
gallery2 * V:0.2, I:0.4 62548 image (Exif)→html créer des albums photos HTML navigables avec des vignettes
outguess * V:0.02, I:0.14 252 jpeg,png outil universel Stéganographique
qcad * V:1.5, I:2 3944 DXF éditeur de données de CAO (KDE)
blender * V:0.5, I:3 28336 blend, TIFF, VRML, … éditeur de contenu 3D pour l’animation, etc.
mm3d * V:0.04, I:0.3 4536 ms3d, obj, dxf, … Éditeur de modèles 3D basé sur OpenGL
open-font-design-toolkit * I:0.03 36 ttf, ps, … méta-paquet pour la conception de polices libres
fontforge * V:0.2, I:1.7 6612 ttf, ps, … éditeur pour les polices PS, TrueType et OpenType
xgridfit * V:0.01, I:0.07 1060 ttf programme pour l’ajustement à la grille (« gridfitting » et la gestion des déformations (« hinting ») des polices TrueType
gbdfed * V:0.01, I:0.11 496 bdf éditeur de polices BDF

[Astuce] Astuce

Recherchez d'autres outils pour les images en utilisant l’expression rationnelle « ~Gworks-with::image » dans aptitude(8) (voirSection 2.2.6, « Options de la méthode de recherche avec aptitude »).

Bien que des programmes ayant une interface graphique comme gimp(1) soient très puissants, des outils en ligne de commandes comme imagemagick(1) sont assez utiles pour la manipulation automatique d'images au moyen de scripts.

Le format standard de fait pour les images d'appareils photo numériques est Exchangeable Image File Format (EXIF) qui est composé d'une image au format JPEG à laquelle sont ajoutés des balises de méta-données. Il peut contenir des informations telles que la date, l’heure ou les paramètres de l’appareil photo.

Le brevet de compression de données sans pertes Lempel-Ziv-Welch (LZW) est arrivé en fin de validité. Les utilitaires du format Graphics Interchange Format (GIF) qui utilise la méthode de compression LZW peuvent être maintenant librement disponibles sur un système Debian.

[Astuce] Astuce

Tous les appareils photons numériques ou les scanners ayant un support d'enregistrement amovible fonctionnent sous Linux avec des lecteurs « USB storage » s'il est conforme à la Design rule for Camera Filesystem et utilise un système de fichiers FAT. Voir Section 10.1.10, « Périphériques d'enregistrement amovibles ».

11.7. Diverses conversions de données

Il y a de nombreux programmes pour convertir les données. Les paquets suivants ont attiré mon attention en utilisant l’expression rationnelle « ~Guse::converting » avec aptitude(8) (voir Section 2.2.6, « Options de la méthode de recherche avec aptitude »).

Tableau 11.18. Liste d'outils divers de conversion de données

paquet popcon taille mot clé description
alien * V:1.2, I:11 244 rpm/tgz→deb convertisseur de paquets étrangers vers des paquets Debian
freepwing * V:0.00, I:0.03 568 EB→EPWING convertisseur de « Electric Book » (Livre électronique - populaire au Japon) en un simple format JIS X 4081 (un sous-ensemble de EPWING V1)

Vous pouvez aussi extraire des données depuis le format RPM avec ce qui suit :

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