Applet_ImpressionEtiquettes

publicité
JAVA 2
Impression
des étiquettes
Date de création :
Dernière modif :
Document :
Créé par :
11.04.2001
17.04.2017
582671465
Daucourt Philippe
Table des matières
1
2
Introduction ....................................................................................................................................... 3
Analyse de l’application .................................................................................................................... 3
2.1
Diagramme de classes ............................................................................................................. 3
2.2
Description des classes ............................................................................................................ 4
2.3
Diagramme des composants .................................................................................................... 4
2.4
Diagramme de déploiement ...................................................................................................... 5
3 Paramètres de mise en œuvre avec Oracle Designer ..................................................................... 5
4 Problème d’impression ..................................................................................................................... 5
5 Remarques ....................................................................................................................................... 6
582671465
17/04/17
Page 2 sur 6
1 Introduction
Ce document décrit les éléments mis en œuvre pour réaliser l’applet d’impression des étiquettes.
Cette application a été réalisée en Java 2 avec le JDK 1.3 de Sun. Elle nécessite le Java Plug-in pour
fonctionner sur un poste client (lire le document « Java Plug-in ») ainsi qu’une gestion des droits
permettant à l’applet d’imprimer (lire le document « Gestion de la sécurité pour les applets »).
2 Analyse de l’application
2.1
Diagramme de classes
Le diagramme de classes ci-dessous n’est pas exhaustif. Il ne contient que les éléments les plus
intéressants pour la compréhension de l’application.
582671465
17/04/17
Page 3 sur 6
2.2
2.3
Description des classes
AppletEtiquette36x89
Classe de base de l’application. C’est l’applet.
Conversion
Librairie permettant d’effectuer des conversions entre des
valeurs en millimètres et en pixels.
BarreOutils
Classe contenant le bouton « Imprimer ».
ZoneImprimable
Classe dont le contenu est imprimable.
Formateur
Classe permettant l’analyse d’une chaîne de caractères
formatée avec des balises (<B>, <I>, …) et l’affichage de
celle-ci à l’écran.
Format
A chaque chaîne de caractères analysé par un Formateur
correspond un ou plusieurs Format contenant le caractère de
début et de fin du format ainsi que le format utilisé (gras,
italique, …).
SyntaxeException
Lorsqu’un Formateur rencontre des erreurs de syntaxe dans
la chaîne de caractères qu’il analyse, il lève une exception de
type SyntaxeException.
Diagramme des composants
Document HTML
<OBJECT> </OBJECT>
Navigateur Web
Java Plug-in
Java Runtime
Environnement (JRE)
AppletEtiquette36x89.class
ZoneImprimable.class
SyntaxeException.class
BarreOutils.class
Conversion.class
Formateur.class
Format.class
582671465
17/04/17
Page 4 sur 6
2.4
Diagramme de déploiement
Smart Label
Printer
PC client
Navigateur Web
Java Plug-in
JRE
OAS
AppletEtiquette36x89.class
ZoneImprimable.class
BarreOutils.class
Conversion.class
SyntaxeException.class
Formateur.class
Format.class
SGBDR
Oracle
Document HTML dynamique
3 Paramètres de mise en œuvre avec Oracle Designer
Pour utiliser l’impression des étiquettes dans un module généré avec Oracle Designer,ll faut appeler
la fonction « SHOWAPPLETINUSERTEXT » du package PL/SQL « APPLET » dans le « User Text »
d’un composant de module avec les paramètres suivants :
code
codebase
width
height
parameters
:
:
:
:
:
AppletEtiquette36x89.class
/applets/
240
130
LIGNE01=xxx|LIGNE02=xxx|LIGNE03=xxx|LIGNE04=xxx| 
LIGNE05=xxx|LIGNE06=xxx|LIGNE07=xxx|LIGNE08=xxx
Les xxx sont à remplacer par les chaînes de caractères à imprimer.
Exemple :
applets.showappletinusertext('AppletEtiquette36x89.class', '/applets',
240, 130, 'LIGNE01=' || FORM_VAL.NOM || '|LIGNE02=' || FORM_VAL.PRENOM
|| '|LIGNE03=' || FORM_VAL.PROFESSION ||
'|LIGNE04=|LIGNE05=|LIGNE06=|LIGNE07=|LIGNE08=')
Dans cet exemple, les chaînes de caractères à imprimer sont stockées dans la structure PL/SQL
« FORM_VAL » d’un composant de module Oracle Designer (User Text : Bottom of View Form).
4 Problème d’impression
Lors de l’impression, les lignes de texte ne sont pas imprimée de façon correcte. En effet, certains
styles ne sont pas appliqués correctement à la police. Par exemple, le style « PLAIN » (sans mise en
forme) est toujours rendu en gras.
J’ai essayé avec plusieurs polices différentes (Arial, Times New Roman, Courier New, …) avec des
tailles différentes (8, 10, 20, …) et sur plusieurs imprimantes (Smart Label Printer, HP LaserJet
2100TN, …) sans le moindre résultat satisfaisant.
J’ai trouvé deux notes dans la « Bug Database » (http://developer.java.sun.com) de Sun concernant
ce problème d’impression. Il s’agit des notes 4338587 et 4317597.
582671465
17/04/17
Page 5 sur 6
Malheureusement, je n’ai testé que très rapidement les solutions proposées dans ces notes et les
résultats n’étaient pas encore concluants.
Je me suis rendu compte que si il n’existe que la police Courier New dans Windows (Panneau de
configuration -> Polices), la mise en forme du texte est correcte à l’impression. Par contre dès que les
polices Courier New Bold, Courier New Italic et Courier New Bold Italic sont réinstallées, le problème
décrit ci-dessus réapparaît. Je n’ai pas encore compris pourquoi.
Il vaut donc mieux pour le moment ne pas utiliser la possibilité de formater les lignes de textes. De
cette façon, toutes les lignes seront imprimées avec les mêmes attributs de police.
5 Remarques
Cette application est la première application pratique que je réalisais avec un langage de
programmation orienté objet. Au fil du développement, je me suis rendu compte que certains de mes
choix (notamment le choix de certains classes, BarreOutils par exemple) n’étaient pas des plus
pertinents.
A un moment donné, il faut savoir se satisfaire de ce qui existe si les fonctionnalités du produit sont
satisfaisantes bien que l’architecture laisse à désirer.
J’aborderai mon prochain développement orienté objets avec un autre regard.
582671465
17/04/17
Page 6 sur 6
Téléchargement