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