Compléments impressions caractères
Impressions Caractères
La lecture de cette annexe nécessite une connaissance préalable des principes généraux gouvernant les impressions sous Harmony. Ces principes sont décrits au chapitre Impressions.
Attributs d'impression caractères
Contrairement aux impressions graphiques, les impressions "Caractères" ne disposent pas de fonctions évoluées telles que tracé de cadre ou impression d'image. Toutefois, des instructions simples peuvent être envoyées à l'imprimante pour que celle-ci sélectionne des attributs d'impression et les affecte aux caractères imprimés.
Les attributs les plus courants sont les suivants :
Style : caractères gras ou italiques.
Attributs : caractères soulignés, barrés, en exposant, en indice.
Taille de police : Pica5 (expansée), Pica10 (normale), Pica17 (comprimée), etc.
Couleur des caractères et couleur du fond.
Orientation (portrait ou paysage).
Mais d'autres "attributs" sont envisageables (y compris des attributs "globaux" comme par exemple la sélection d'un bac d'alimentation).
Remarque :
En mode graphique, les attributs d'impression sont simulés : voir la rubrique Simulation des attributs d'impression caractères en mode graphique.
Impressions Harmony en mode caractères
Rappelons d'abord les points essentiels concernant les éditions en mode caractères :
Les programmes envoient au driver les textes, éventuellement agrémentés d'attributs d'impression simples (gras, italique, souligné, caractères comprimés, expansés, etc.).
Les drivers émettent les caractères sur le port d'entrée-sortie mais n'effectuent pas de traduction des attributs d'impression. Pour que les applications restent indépendantes du matériel, Harmony propose une codification standard des attributs et prend en charge leur traduction en commandes reconnues par le matériel. Nous y reviendrons à la rubrique Codification des attributs d'impression du livre consacré aux fichiers descriptifs d'imprimante.
Les fonctions de paramétrage du gestionnaire d'impression ne sont plus accessibles.
Les états ne peuvent pas être visualisés à l'écran.
Le jeu de caractères utilisé par Harmony suit la codification ANSI.
Mise en oeuvre des impressions spool en mode caractères
Si plusieurs imprimantes sont installées sur un site, l'utilisateur doit pouvoir sélectionner l'une d'entre elles lorsqu'il effectue une édition. Pour cela (à condition toutefois que le fichier descriptif d'imprimante convienne), on peut toujours changer l'imprimante par défaut de Windows.
Mais Harmony propose une manière plus simple et plus rapide qui consiste à choisir le "modèle d'imprimante" approprié, depuis le menu de l'application (Cf. rubriques Gestion des modèles d'imprimante et Liaison entre modèle et imprimante Windows).
Liaison entre modèle et imprimante Windows
Une édition faite par une application Harmony en mode caractères utilise implicitement l'imprimante par défaut de Windows, sans tenir compte du paramétrage effectué pour cette imprimante au niveau du gestionnaire d'impression.
Mais lorsqu'on dispose de plusieurs imprimantes, il est utile d'établir une liaison explicite entre modèle et imprimante.
Pour les impressions en mode caractères, cette liaison se définit au niveau du fichier Divalto.ini :
Dans le chapitre générique [Printer] si le modèle ne précise pas de "format pour le spool".
Dans le chapitre [Printer-xxxx] si xxxx est le format déclaré dans le modèle.
Gestion des liaisons modèle / imprimante
Pour définir ou modifier une liaison, appelez l'utilitaire xDivaltoPrinters. Celui-ci effectue automatiquement la mise à jour des chapitres [Printer] de Divalto.ini.
Voir aussi les rubriques Méthode de sélection de l'imprimante et Exemple de liaisons modèle / imprimante.
A titre indicatif, un chapitre [Printer] ou [Printer-xxxx] contient une commande "device=..." précisant l'imprimante, le driver et le port d'entrée/sortie. La syntaxe de la commande <device> est la suivante : device=<nom de l'imprimante>,<nom du driver>,<port> Par exemple : device=HP LaserJet Series II,HPPCL,LPT1: device=Epson FX-80,EPSON9E,LPT1:
Une impression "fichier" est possible en remplaçant le port d'entrée / sortie par le nom (complet) d'un fichier. Par exemple : device=Epson FX-80,EPSON9E,c:\Divalto\sys\ficimp
Méthode de sélection de l'imprimante
Harmony emploie la méthode suivante pour sélectionner une imprimante :
Si le modèle précise un format d'impression (format pour le spool), Harmony recherche un chapitre [Printer-xxxx] référençant ce format. On associe ainsi une imprimante à chaque format : [Printer-xxxx] device=... [Printer-yyyy] device=...
Si le modèle ne précise pas de format ou si le format n'est pas référencé comme indiqué ci-dessus, Harmony recherche le chapitre générique [Printer]. On associe ainsi une imprimante aux impressions caractères sans format : [Printer] device=...
Enfin, si aucun de ces chapitres n'est présent dans Divalto.ini, c'est l'imprimante par défaut de Windows qui est utilisée.
Remarque : aucune différence n'est faite au niveau du format entre lettres minuscules et majuscules.
Exemple de liaisons modèle / imprimante
Mon installation comporte deux imprimantes : une imprimante gérée par le fichier descriptif FIHIMP1 en mode caractères et par un driver EPSON en mode graphique, une imprimante gérée par le fichier descriptif FIHIMP2 en mode caractères et par un driver HP en mode graphique :
Application Harmony Application Harmony |
Driver EPSON Driver LASER JET |
SPOULEUR |
Imprimante 1 Imprimante 2 |
Une solution consiste ici à :
Installer les drivers Windows pour les deux imprimantes.
Créer deux modèles d'impression dans Harmony : Modèle EPS (format spool = EPS). Modèle HP (format spool = HP).
Créer par xDivaltoPrinters les sections : [Printer-EPS] device=Epson FX-80,EPSON9E,LPT1: [Printer-HP] device=HP laserJet Serie II,HPPCL,LPT2: [GraphPrinter-EPS] device=Epson FX-80,EPSON9E,LPT1: [GraphPrinter-HP] device=HP laserJet Serie II,HPPCL,LPT2:
Fichiers descriptifs d'imprimante Harmony
Pour chaque type d'imprimantes utilisées lors d'une édition en mode caractères, Harmony utilise un fichier paramètres dénommé "fichier descriptif d'imprimante". Il s'agit d'un fichier au format .txt contenant, pour chaque attribut d'impression, la commande correspondante adaptée au matériel concerné.
Des fichiers descriptifs "génériques", correspondant aux types d'imprimantes les plus courants, sont livrés en standard avec Harmony. Conventionnellement, ces fichiers sont préfixés par "FIH" :
FIHPROP.txt correspond au mode Proprinter (IBM).
FIHESCP.txt correspond au mode ESC/P (Epson, Seiko, Citizen).
FIHLJ.txt correspond au mode LaserJet (HP). FIHLJ2.txt correspond au mode LaserJet avec un matériel ne reconnaissant pas les caractères expansés. FIHLJ prend une police PICA 5 pour les caractères expansés. Si l'imprimante ne possède pas ce type de police (reportez-vous au résultat rendu par le programme LISCAR), utilisez FIHLJ2. FIHLJ2 trace les caractères expansés à partir d'une police PICA 10 mais avec un espacement "PICA 5" entre les caractères.
Remarques :
Pour ses éditions caractères en mode graphique, Harmony utilise également un fichier descriptif d'imprimante (à choisir en FihWgra et FihWgrc).
Il est également possible de créer vos propres fichiers descriptifs.
Utilisez le fichier FihNull.txt si l'imprimante ne reconnaît aucun attribut.
Liste des fichiers descriptifs d'imprimante standard
Type d'imprimante | |
FihEscp FihLj FihLj2 FihProp FihWgra FihWgrc | Emulation Esc/P. Emulation Laserjet. Emulation Laserjet (avec un matériel ne reconnaissant pas les caractères expansés). Emulation Proprinter. A utiliser impérativement pour les éditions caractères en mode graphique (quelque soit le matériel). |
Codification des attributs d'impression
En mode caractères, le driver Windows n'interprète pas les caractères envoyés (il n'est utilisé que pour émettre les caractères sur le port d'entrée-sortie). Afin que les programmes d'application restent indépendants des matériels utilisés, une interface spécifique à Harmony a été définie pour traiter les attributs d'impression caractères.
Les commandes de cette interface sont stockées dans les fichiers descriptifs d'imprimantes, fichiers au format .txt (on peut donc les saisir par exemple avec Notepad ou Wordpad).
Principe
Par la suite, on nomme "commande" une séquence de caractères qui sera interprétée par le matériel comme une demande de changement d'attribut. Une commande ne peut pas être littérale car elle serait interprétée comme du texte à imprimer. Une commande est reconnue par l'imprimante en tant que telle parce qu'elle commence par un caractère dit d'échappement (ainsi nommé car il s'agit généralement du caractère Echap, de code hexadécimal $1B). Exemple : le passage en gras en mode Esc/P est commandé par la séquence $1B $45. Bien évidemment, le programme pourrait lui-même envoyer les "vraies" séquences de commande à l'imprimante. Mais dans ce cas, il serait totalement dépendant du matériel, ce qui n'est pas souhaitable. La solution consiste alors à envoyer non pas les "vraies" séquences d'échappement mais des séquences propres à Harmony. Les séquences reconnues par Harmony sont conventionnellement comprises entre $1B $E0 et $1B $FF. (Mais attention $1B $E2 et $1B $E3 sont réservées car envoyées automatiquement en début et fin d'impression - traduction en standard par les commandes PrintBegin et PrintEnd.)
Un nom de commande est affecté à chaque séquence conventionnelle. Remarque : ce nom peut être librement choisi (à quelques exceptions près où le nom est figé). Exemple : $1B $E4 BoldBegin
Ensuite, on associera à chaque nom de commande la "vraie" séquence à envoyer à l'imprimante. Exemple : BoldBegin $1B $45
De plus, les changements de taille de police peuvent être "empilés". Cela signifie que la police, obtenue après une commande de changement de taille, pourra dépendre de la taille de police actuelle. Exemple : la commande de passage en caractères expansés aura pour résultat deux tailles différentes, selon que la taille actuelle est normale ou comprimée.
Enfin, on pourra également indiquer le jeu de caractères à utiliser (ANSI ou PC8).
Chapitres
L'interface est subdivisée en 4 chapitres :
[Translate] | Permet d'associer les noms de commande aux séquences d'échappement Harmony. |
[Cmd] | Permet d'associer les séquences d'échappement matérielles aux noms de commandes. |
[Stack] | Permet de définir la taille de police à utiliser pour les modes "Normal", "Comprimé", "Expansé", "Elite", etc. ainsi que les règles en cas de changement de tailles en cascade. |
[Options] | Permet de définir des options (actuellement, uniquement le jeu de caractères). |
Chapitre [Translate]
Ce chapitre permet d'associer un nom de commande à chaque séquence d'échappement Harmony. Si une séquence ne précise aucune commande, rien ne sera envoyé à l'imprimante à la rencontre de cette séquence.
Exemple :
[Translate]
$1b $e0 NormalBegin $1b $e1 NormalEnd $1b $e2 PrintBegin $1b $e3 PrintEnd $1b $e4 BoldBegin ...
Remarques :
Le premier caractère d'une ligne significative doit être en position 1.
Un ";" en position 1 indique une ligne de commentaire.
La casse des noms de commande n'est pas significative.
Un nom de commande est limité à 32 caractères et peut être choisi librement.
Certaines séquences Harmony sont stockées dans des champs de l'enregistrement System : voir la rubrique Codes d'attribut d'impression prédéfinis.
Chapitre [Cmd]
Ce chapitre permet d'associer la chaîne de caractères à envoyer à l'imprimante à chaque nom de commande. Une chaîne est composée de texte(s) délimité(s) par des apostrophes ou des guillemets et/ou de caractères hexadécimaux au format $XX et/ou de noms de commande.
Exemple :
[Cmd] Pica5 $1B $57 '0' $1B $50 $12 $1B $57 $31 Pica12 $1B $57 "0" $1B $4D BoldBegin $1B $45 BoldEnd $1B $46 ...
Remarques :
Un nom de commande doit commencer en position 1 et est limité à 32 caractères.
Un ";" en position 1 indique une ligne de commentaire.
La casse des noms de commande n'est pas significative. Mais attention, celle des ordres à envoyer à l'imprimante doit être respectée.
La taille d'une commande à envoyer à l'imprimante est limitée à 64 caractères.
Une commande peut être "vide", indiquant qu'il n'y a rien a envoyer. Exemple : PrintEnd
A titre indicatif, voici une liste des noms de commande que vous trouverez dans les fichiers descriptifs standard :
Pica5 / Pica10 / Pica12 / Pica17 / Pica20 / Pica85 (tailles de police)
BoldBegin / BoldEnd (style gras)
ItalicBegin / ItalicEnd (style italique)
UnderlineBegin / UnderlineEnd (attribut souligné)
SuperScriptBegin / SuperScriptEnd (attribut exposant)
SubScriptBegin / SubScriptEnd (attribut indice)
StrikeThroughBegin / StrikeThroughEnd (attribut barré)
OtherBegin / OtherEnd (autre attribut)
Landscape / Portrait (orientation)
Lpi6 / Lpi8 (nombres de lignes par pouce)
BlackFont / BlueFont / GreenFont / CyanFont / RedFont / MagentaFont / YellowFont / WhiteFont (couleurs des caractères)
BlackBackGround / BlueBackGround / GreenBackGround / CyanBackGround / RedBackGround / MagentaBackGround / YellowBackGround / WhiteBackGround (couleurs du fond)
PrintBegin / PrintEnd (initialisation et fin d'impression)
Chapitre [Stack]
Ce chapitre permet de définir la taille de police à utiliser pour les modes "Normal", "Comprimé", "Expansé", "Elite", etc. ainsi que les règles en cas de changement de tailles en cascade. Vous pouvez en effet envoyer une commande de changement de taille dépendant de la taille de police courante. Par exemple, la commande de passage en caractères expansés peut avoir pour résultat deux tailles différentes, selon que la taille courante est normale ou comprimée.
Dans ce chapitre, figurent également des noms de commande mais celles-ci ne sont pas directement associées à une séquence à envoyer à l'imprimante. Elles font par contre appel aux commandes de changement de taille proprement dites (en standard : Pica5, Pica12, etc.) qui elles sont dans le chapitre [Cmd]. Exemple : NormalBegin/NormalEnd * PICA10
Une commande du chapitre [Stack] doit respecter les règles syntaxiques suivantes :
En colonne 1, doit figurer le nom de la commande "début de mode" suivi d'un "/" suivi du nom de la commande "fin de mode".
Derrière, on indiquera zéro, un ou plusieurs couples de noms de commande de taille indiquant la taille à utiliser en fonction de la taille en cours. Le second nom du couple spécifie la taille de police à envoyer SI la taille de police en cours correspond au premier nom du couple. Les 2 noms d'un couple doivent être séparés simplement par un espace, les différents couples par une virgule. Une virgule doit également suivre le dernier couple pour le séparer du nom de commande de taille par défaut (voir paragraphe suivant).
Derrière, doit toujours figurer le nom d'une commande de taille "par défaut" précédée de " "{*}. Cette taille sera envoyée si la taille de police courante n'apparaît pas en premier dans l'un des couples précédents (ou si aucun couple de noms n'est spécifié).
Exemple :
[Stack]
NormalBegin/NormalEnd * PICA10
ExpandedBegin/ExpandedEnd PICA10 PICA5,PICA17 PICA85,PICA85 PICA85, *PICA5 ...
Dans cette exemple, la commande NormalBegin enverra la commande PICA10 dans tous les cas ; la commande ExpandedBegin enverra la commande PICA5 si la taille en cours est PICA10, la taille PICA85 (8,5 caractères/pouce) si la taille en cours est PICA17 ou déjà PICA85, la taille PICA5 dans tous les autres cas.
Remarques :
A la rencontre de la commande de "début de mode", Harmony envoie donc la taille demandée dans ce chapitre et "empile" la nouvelle taille. A la rencontre de la commande de "fin de mode", Harmony "désempile" la taille en cours, calcule et envoie la commande permettant de retrouver la taille précédente.
En principe, ce chapitre peut rester inchangé dans un fichier personnalisé car il ne dépend pas, à priori, du matériel.
A titre indicatif, voici une liste des noms de commande que vous trouverez dans les fichiers descriptifs standard :
NormalBegin/NormalEnd
CompressedBegin/CompressedEnd
ExpandedBegin/ExpandedEnd
EliteBegin/EliteEnd
Chapitre [Options]
Contient une clé qui indique le jeu de caractères de l'imprimante (ANSI ou PC8).
Exemple : [Options] ANSI
Fonctions avancées
Tests dans le chapitre [Cmd]. Une commande du chapitre [Cmd] peut effectuer un test simple sur le taille de la police en cours et envoyer une commande si le test est positif (voir un exemple réel dans le fichier fihlj2.txt), en écrivant par exemple :
;si on est en PICA5, passer en PICA5B pour rectifier les caractères if(PICA5 PICA5B)
Tracés de cadre. Les noms de commande FrameBegin et FrameEnd sont figés. Ces commandes sont automatiquement programmées par Harmony en cas d'impression d'un cadre (masque Xwin caractères). A ajouter au fichier descriptif de votre imprimante si celle-ci possède une police permettant d'imprimer des cadres (mais non traités dans les fichiers standard).
Traitement de la couleur. La couleur des caractères et la couleur de fond font l'objet d'un traitement particulier. Pour envoyer ces couleurs, un programme doit émettre :
La séquence $1B $EA (par exemple), à traduire dans le fichier descriptif par la commande de nom figé COLOR.
Immédiatement suivie de la couleur de caractères et de la couleur de fond (valeurs numériques toutes deux comprises entre "1" et "8") : La valeur "1" correspond à la couleur Noire (noms de commande figés BlackFont et BlackBackGround). La valeur "2" correspond à la couleur Bleue (noms de commande figés BlueFont et BlueBackGround). La valeur "3" correspond à la couleur Verte (noms de commande figés GreenFont et GreenBackGround). La valeur "4" correspond à la couleur Cyan (noms de commande figés CyanFont et CyanBackGround). La valeur "5" correspond à la couleur Rouge (noms de commande figés RedFont et RedBackGround). La valeur "6" correspond à la couleur Magenta (noms de commande figés MagentaFont et MagentaBackGround). La valeur "7" correspond à la couleur Jaune (noms de commande figés YellowFont et YellowBackGround). La valeur "8" correspond à la couleur Blanche (noms de commande figés WhiteFont et WhiteBackGround).
Début et fin d'impression. Au début de l'impression, Harmony envoie automatiquement la séquence ($1B $E2), traduite en standard par la commande PrintBegin. A la fin de l'impression, Harmony envoie automatiquement la séquence $1B $E3, traduite en standard par la commande PrintEnd. Ces commandes peuvent être utilisées par exemple pour sélectionner un bac d'alimentation au début de l'impression et rétablir le bac par défaut à la fin de l'impression.
Codes d'attribut d'impression prédéfinis
L'enregistrement System contient les champs de codage d'attribut suivants :
Zone système | Attribut d'impression |
System.Norm ($1B $E0) | Caractères normaux début |
System.Eonc ($1B $E1) | Caractères normaux fin |
System.Qualt ($1B $E4) | Qualité courrier début |
System.Eoq ($1B $E5) | Qualité courrier fin |
System.Compr ($1B $E6) | Caractères comprimés début |
System.Eoc ($1B $E7) | Caractères comprimés fin |
System.Expnd ($1B $EC) | Caractères expansés début |
System.Eoe ($1B $ED) | Caractères expansés fin |
System.Abc1 ($1B $F0) | Jeu de caractères 1 début |
System.Eoa1 ($1B $F1) | Jeu de caractères 1 fin |
System.Abc2 ($1B $F2) | Jeu de caractères 2 début |
System.Eoa2 ($1B $F3) | Jeu de caractères 2 fin |
System.Gra1 ($1B $F4) | Mode graphique 1 début |
System.Eog1 ($1B $F5) | Mode graphique 1 fin |
System.Gra2 ($1B $F6) | Mode graphique 2 début |
System.Eog2 ($1B $F7) | Mode graphique 2 fin |
Simulation des attributs d'impression caractères en mode graphique
Pour ses éditions caractères en mode graphique, Harmony utilise la police Terminal en mode :
10 Cpi (10 caractères par pouce).
6 Lpi (6 lignes par pouce).
Harmony simule aussi les attributs d'impression prédéfinis suivants :
Attribut d'impression | Zone système | Fonction simulée |
Caractères normaux début / fin | System.Norm / System.Eonc | Mode 10 Cpi (Pica10) |
Qualité courrier début | System.Qualt | Caractères gras |
Qualité courrier fin | System.Eoq | Fin gras |
Caractères comprimés début | System.Compr | Mode 17 Cpi (Pica17) |
Caractères comprimés fin | System.Eoc | Mode 10 Cpi (Pica10) |
Caractères expansés début | System.Expnd | Mode 5 Cpi (Pica5) |
Caractères expansés fin | System.Eoe | Mode 10 Cpi (Pica10) |
Jeu de caractères 1 début | System.Abc1 | Caractères italiques |
Jeu de caractères 1 fin | System.Eoa1 | Fin italiques |
Jeu de caractères 2 début | System.Abc2 | Caractères soulignés |
Jeu de caractères 2 fin | System.Eoa2 | Fin soulignés |
Mode graphique 1 début | System.Gra1 | Mode 12 Cpi (Pica12 <=> Elite) |
Mode graphique 1 fin | System.Eog1 | Mode 10 Cpi (Pica10) |
Test d'impression en mode caractères
Le programme LISCAR.dhop fait un test d'édition en mode caractères. Il est conseillé de le lancer pour chaque type d'imprimante.
Problèmes d'impression en mode caractères
Si vous constatez un problème lors d'une impression Harmony en mode caractères et si l'imprimante fonctionne correctement sous Windows :
Si l'état n'est pas enregistré dans le spouleur et si le problème concerne un programme en particulier (les impressions fonctionnent parfaitement pour d'autres programmes Harmony), vérifiez que ce programme libère l'imprimante (instruction Diva PrintEnd). C'est cette libération (ou à défaut une instruction d'enchaînement de programme) qui déclenche l'édition au niveau du spouleur de Windows.
Si l'édition sort sur l'imprimante sans attribut d'impression (le mode comprimé ou expansé ne fonctionne pas, par exemple - des caractères parasites apparaissent probablement à l'endroit où un changement d'attribut devrait se produire-), le fichier descriptif imprimantes utilisé n'est pas le bon. Consultez en annexe la liste des fichiers fournis avec Harmony. Le nom du fichier descriptif est paramétré au niveau du modèle d'imprimante (STD par défaut).