Home
Gestionnaire d`impression - Infoscience
Contents
1. pex Mets toutes les options d un groupe dans une liste Voir aussi clearListOptions param groupName Le nom du groupe d options return La liste des options du groupe d options ArrayList listOptions String groupName String opt optionsGroup getProperty groupName StringTokenizer st new StringTokenizer opt while st hasMoreTokens A CODE JAVA 38 String list String st nextToken optionsList add list return optionslist Efface la liste des options du groupe void clearListOptions optionsList clear T Permets de retrouver toutes les options d un groupe d options param optionGroupName Le nom du groupe d options return La liste des options du groupe d options void getOptions String optionGroupName Enumeration t tokenizedOptionsGroup keys while t hasMoreElements System out println t nextElement Permets de savoir quel groupe d options appartient une option param option Le nom de l option return Le groupe d options de l option String getGroup String option String group tokenizedOptionsGroup getProperty option return group T Affiche dans le terminal quels sont les commandes manquantes A CODE JAVA 39 void verifyCommand Enumeration t tokenizedOptionsGroup keys while t hasMoreElements String e String t nextElement Stri
2. nom du groupe choosePrinter dans le fichier type dat static final String choosePrinter choosePrinter nom de l option landscape dans le fichier type dat static final String checkboxLandscape Landscape nom du l option dans le fichier type dat static final String checkboxPortrait Portrait nom du groupe duplex dans le fichier type dat static final String choiceDuplex Duplex nom du groupe number of pages per sheet dans le fichier type dat static final String choiceNumberPages Number_of_pages_per_sheet nom du groupe media source dans le fichier type dat static final String choiceMediaSource Media_source nom du groupe media size dans le fichier type dat static final String choiceMediaSize Media_size A CODE JAVA for 28 nom du groupe media type dans le fichier type dat static final String choiceMediaType Media_type nom du groupe media output dans le fichier type dat static final String choiceMedia0utput Media_output nom du groupe orientation dans le fichier type dat static final String nom de l option static final String nom de l option static final String nom de l option static final String nom de l option static final String nom de l option static final String orientation Orientation from to dans le fichier type dat checkboxFrom From_to odd dans le fichier t
3. xGuiFrame2 est une classe qui gnre une fentre affichant le flux sortant de l impri class GuiFrame2 extends Frame implements WindowListener ActionListener Label 1 Button b Panel p1 p2 GuiFrame2 String s Toolkit tk Toolkit getDefaultToolkit Dimension d tk getScreenSize setLocation d width 2 d height 2 GridLayout gl new GridLayout 2 0 setLayout gl pi new Panel FlowLayout f11 new FlowLayout p1 setLayout f11 1 new Label s pi add 1 p2 new Panel FlowLayout f12 new FlowLayout p2 setLayout f12 b new Button OK b addActionListener this p2 add b A CODE JAVA 63 add p1 add p2 this addWindowListener this public void windowClosing WindowEvent e this hide public void windowOpened WindowEvent e public void windowClosed WindowEvent e public void windowlconified WindowEvent e public void windowDeiconified WindowEvent e public void windowActivated WindowEvent e public void windowDeactivated WindowEvent e public void actionPerformed ActionEvent e Object o e getSource if o instanceof Button System exit 0 A CODE JAVA 64 A 9 PageCount java package ch epfl lse impression import java lang import java io import java util import java net PageCount utilise quelques commandes UNIX pour retrouver des informations utile aux documents imprimer ou au fonctionne
4. Le Backends est aussi utilis pour d terminer les imprimantes disponibles 2 2 3 Fonctionnalit s Comme CUPS utilise la commande lp toutes les options d impression de lp sont disponibles Options g n rales de mise en page Choix de l orientation Choix du type de papier Imprimer recto verso Imprimer avec une page de garde Imprimer plusieurs pages sur une seule etc 2 PREMI RE D MARCHE 11 En plus des options de mise en page classiques CUPS est capable de garder les travaux d impression m me apr s un red marrage Il inclut galement un syst me d authentification de plus chaque utilisateur poss de ses pr f rences concernant le type de papier mise en page r solution 2 2 4 Besoins Un compilateur C et C doit tre install par exemple gcc Pour pouvoir utiliser les filtres nous aurons besoin des librairies JPEG PNG TIFF ZLIB CUPS fonctionnera sans ces filtres mais les fonc tionnalit s seront r duites 2 2 5 Installation Lancer les scripts suivants Configure L installation par d faut va mettre CUPS dans les r pertoire etc usr var ce qui va effacer les commandes d impression existantes Rajouter prefix some directory pour changer de r pertoire make make install Pour lancer le programme usr sbin cupsd 2 3 Conclusion Malgr le fait que que les deux projets pr c demment cit s soient com plets et r pondent totalement aux exigence
5. Side_tray o outtray side Top_tray o outtray top Upper_tray o outtray upper SHEETCOUNT sheetcount o sheetcount MEDIA SIZE IS0_A4 0 sheetsize a4 ISO_A5 0 sheetsize a5 IS0_A3 0 sheetsize a3 ISO_B5 0 sheetsize b5 IS0_B4 0 sheetsize b4 US_letter o sheetsize letter US_ledger o sheetsize ledger US_legal o sheetsize legal Executive o sheetsize executive US10_envelope o sheetsize business_envelope ISO_DL_envelope o sheetsize dl 7_envelope o sheetsize 7_envelope SIMPLEX AND DUPLEX B FICHIERS DE CONFIGURATION 1 Sided o simplex 2 Sided o duplex ORIENTATION Portrait o orient port Landscape o orient land SPECIAL MEDIA Letterhead_paper Drilled_paper Transparencies 0 face up Gummed_labels 0 face up choosePrinter d Odd o page set odd Even o page set even From_to P No_banner o nobanner B 4 Ip Path usr bin lp 75
6. String optionsGroup optionsList get i spooler checkboxNoBanner setEnabled true pack if o instanceof Checkbox Checkbox cb Checkbox o if cb checkboxPortrait boolean statePortrait cb getState if statePortrait checkboxLandscape setState false else checkboxPortrait setState true if cb checkboxLandscape boolean stateLandscape cb getState if stateLandscape job orientation spooler checkboxLandscape if stateLandscape checkboxPortrait setState false checkbox0dd checkboxEven checkboxEcon checkboxNoBa A CODE JAVA 61 else checkboxLandscape setState true if cb checkboxAll boolean stateAll cb getState if stateAll checkboxFrom setState false else checkboxAll setState true textfieldFrom setEnabled false textfieldTo setEnabled false if cb checkboxFrom boolean stateFrom cb getState if stateFrom checkboxAll setState false else checkboxFrom setState true textfieldFrom setEnabled true textfieldTo setEnabled true GuiCanvas est une classe qui gnre le logo EPFL prsents dans l interface graphique class LogoCanvas extends Canvas Image logo LogoCanvas Toolkit tk Toolkit getDefaultToolkit Class pl this getClass URL logoURL pl getResource logo gif A CODE JAVA 62 logo tk getImage logoURL public void paint Graphics g g drawImage logo 0 0 this
7. autres ressources dans le flux de donn es Le programme pprdrv envoie le fichier l imprimante en appelant un programme d interface d imprimante Le programme d interface d imprimante est responsable d accepter l impression de la transmettre l imprimante et de recevoir les messages d erreurs pour les 2 PREMI RE D MARCHE 5 ichier PostScript pprjobs commert_file text_file pages_file por queue jobs_ le Figure 1 Une impression entre dans la file d attente transmettre ensuite au programme pprdrv D s que l impression est termin e le programme pprdrv se ferme suivi du programme d interface d imprimante Le d mon d impression pprd le d tecte et retire les impressions de la file d attente et essaie d informer l utilisateur que l impression est termin e 2 PREMI RE D MARCHE pprijobs comm ert_ile text _ile pages_ile prr queuef jobs_ le Imprimante Figure 2 PPR lance une impression Programme d interface d imprimante pprdrv communique avec l imprimante travers le programme d interface d imprimante Ce programme lit le fichier PostScript depuis la stdin et l envoie l imprimante Si l interface re oit des messages depuis l imprimante il les copie sur la stdout L interface indique galement l imprimante o commence un fichier ps et o finit un autre 2 1 3 Fonctionnalit s Voici les diff rentes fonctionnalit s que
8. Solaris SunOS Linux sp cialement con u pour fonctionner avec des imprimantes PostScript Il est une alternative au programme lp utilis sur les machine UNIX En effet PPR n a nulle besoin des fonctions de Ip il poss de lui m me un pro gramme ppr un d mon pprd etc PPR g re les diff rentes imprimantes soit via le protocol TCP IP soit en utilisant l adresse IP PPR peut tre utilis par des lignes de commande ou par une interface graphique WWW 2 1 2 Design Tous les travaux d impression passent par le programme ppr ppr lit le fichier PostScript imprimer et le fractionne en trois fichiers Ces trois fichiers sont plac s dans un r pertoire jobs par exemple Un quatri me fichier est cr celui ci d crit le travail d impression et ses diff rentes options d impression Des que ces fichiers ont t cr s ppr envoie un message au d mon pprd pour lui indiquer qu une nouvelle impression est dans la file d attente Lorsque ppr d termine qu il est temps d imprimer le document sur une imprimante il appelle un programme appel pprdrv qui lit les trois fichiers d impression comment text pages et les rassemble dans un fichiers Postscript Simultan ment il va lire les informations depuis le fichiers configuration de l imprimante le fichiers file d attente queueFile et un fichier PostScript Printer Description PPD Il peut galement inclure des caract res ainsi que d
9. ce programme ainsi que des possibilit s de modification des options du rajout ou de la suppression d une imprimante 3 3 1 Utilisation G n ral Installation et execution du programme Pour installer le programme il suffit de copier le fichier projet jar sur son ordinateur Pour l executer i e pour lancer une impression il faut taper dans le ter minal la commande suivante java cp projet jar ch epfl lse impression Spooler filename_to_print Il est possible d imprimer plusieurs documents avec les m mes options pour cela il faut taper la commande java cp projet jar ch epfl lse impression Spooler filename1_to_print filename2_to_print filename3_to_print etc 3 DEUXI ME D MARCHE 21 Lancer une impression Pour lancer une impresion il faut effectuer les op rations suivantes e ex ecuter le programme e Lorsque que la fen tre de l interface graphique est ouverte selectionner une imprimante dans la liste tout gauche de la fen tre Toutes les options par d faut de l imprimante s l ctionn e vont s afficher e Choisir les diff rentes options d impression voulues Cliquer sur le bouton Print pour lancer l impression Pour fermer la fen tre sans imprimer cliquer sur le bouton Cancel lol RR Madia Settings Print Range Printers rerl Options G T grener T tic Santet S 19 7 pera T Landis Me o Beng Jarre L ge T Fm to M Dusiex Favre Mets Gur ta ps F F
10. duplex ORIENTATION Portrait o orient port Landscape o orient land SPECIAL MEDIA Letterhead_paper Drilled_paper Transparencies 0 face up Gummed_labels o face up choosePrinter d Odd o page set odd Even o page set even From_to P No_banner o nobanner noter e Les noms de groupes dans le fichier printer Type dat doivent tre tous pr sent et doivent avoir les noms pr d finis plus haut e Les options droite dans le fichier printer Type dat et gauche dans le fichier commandType dat doivent avoir le m me nom sinon le syst me ne les reconnaitra pas e Si la commande comporte est signe il faut qu il soit pr c d d un ex Portrait o orient port e Un groupe d options ou une commande pour une option peu vent comporter une valeur nulle 3 2 3 Description de la GUI L interface graphique de ce programme a t r alis e partir du package awt de Java et ceci pour la rendre la plus compatible possible dans l optique d une utilisation multiplateforme UNIX MAC Notre but tait de faire une interface graphique la fois robuste et conviviale 3 DEUXI ME D MARCHE 19 TT o ER Media Settings Printers General Options n r r u Metia Soure gt Duss z z Mesa tice 7 ai 2 O en Mesa rm canei Gocumentio pret fest ps Figure 7 Interface Graphique du Gestionnaire d impression La GUI est structur e de la mani re suivante un
11. la liste des imprimantes disponibles printerList dat Ce fichier comporte 2 entr es d un ct le nom de l imprimante de l autre son type ou mod le associ 3 DEUXI ME D MARCHE 15 Syntaxe correcte printerName printer Type Le deuxi me type de fichiers est utilis pour la decription d une imprimante et de ses options disponibles une imprimante est d crite par 2 fichiers printer Type dat d crit les capacit s d une imprimante ses options sont ordonn es par groupes Syntaxe correcte groupName option x option y option z Les noms de groupes support s par le programme sont e Select_printer e Number_of_copies e No_banner e Economy e Orientation e Duplex e Media size e Media type e Media_source e Media_output e Pages_ranges e Number_of pages per sheet commandType dat est le fichier correspondant aux commandes lp as soci es aux options Syntaxe correcte option commande Exemple d un fichier printer Type dat ici lps17 dat 0ptions of type 1ps17 printers Properties for Usual Options Select_printer choosePrinter Number_of_copies sheetcount No_banner No_banner 3 DEUXI ME D MARCHE 16 Economy Properties for general Option Orientation Portrait Landscape Duplex default 1 Sided 2 Sided Properties for media types Media_size default A4 A5 A3 B5 B4 1letter ledger legal Executive US10_envelope DL_en Media_type default Letterhead_paper Drilled_paper Transparencies
12. le gen eral au plus sp ecifique Lorsqu une imprimante est selection e par l utilisateur le programme d termine son nom son type ou mod le et cherche ensuite la description de l imprimante gr ce aux fichiers de configuration Les travaux d impression sont ensuite envoy s la classe Job qui se charge d ex cuter la commande lp avec les param tres correctes Une fois que les travaux d impression ont t mis sur la file d attente le programme se ferme La figure 6 montre l organisation des classes PrinterType OptionsGroup Figure 6 Hi rarchie des classes PrinterList 3 2 1 Description des classes PrinterList java PrinterList est une classe qui charge en m moire la liste des imprimantes disponibles partir d un fichier de configuration voir Description des Fichiers de Configuration printerList dat Elle peut galement retrouver le type d une imprimante partir du nom de l imprimante Printer java Dans le programme une imprimante est d finie par deux valeurs e son nom qui doit tre unique c est l identifiant de l imprimante e son type ou mod le qui peut tre adopt par d autres imprimantes Printer Type java Cette classe va construire les options de l imprimante partir de son type ou mod le 3 DEUXI ME D MARCHE 14 OptionsGroup java OptionsGroup java charge en m moire la description de l imprimante partir d un fichier voir Description des Fichier
13. pour le textfield numberCopies String numberCopies Variable modifie par la GUI pour le choice mediaSource String mediaSource Variable modifie par la GUI pour le choice mediaSize String mediaSize Variable modifie par la GUI pour le choice mediaType String mediaType Variable modifie par la GUI pour la liste printerName String printerName Variable modifie par la GUI pour le choice mediaOutput String mediaQutput Construit la ligne de commande pour lp return La ligne de commande String buildLine String command job job command return job pex Execute la ligne de commande pour le ou les fichiers imprimer void print ArrayList printLine new ArrayList for int i 0 i lt filename size i job filename get i final boolean has_files filename size gt O A CODE JAVA 47 final boolean debug System getProperty Debug null try if debug System out println job return debug Runtime runtime Runtime getRuntime Process process runtime exec job System out println Waiting for job to finish n if has_files 1 we must do a pipe OutputStream lp_data process getOutputStream InputStream data_input new FileInputStream FileDescriptor in int c do c data_input read if c gt 0 lp_data write char c while c gt 0 lp_data close data_input clos
14. propose PPR 1 Options d impression Choix du nombre de copies imprimer d un document 2 PREMI RE D MARCHE 7 ie el PROGRAMME D INTERF ACE Imprimante TOTAL LUS PROGRAMME Ba js A D INTERF ACE ge Im prim ante2 PROGRAMME DINTERFACE Figure 3 Plusieurs instance de pprdrv pour plusieurs imprimantes Imprimantes Choix du nombre de pages que l on veut imprimer sur une Imprimer un document en mode recto verso ou en mode normale Placer une signature sur chaque page Choix de l ordre d impression du document i e d imprimer dans l ordre croissant ou d croissant des pages Imprimer une page de garde pour indiquer le nom de l utilisateur qui a imprime le document ainsi que d autres informations Mais cette option peut tre d sactiv e 2 S lection automatique de tiroir Il est possible de choisir dans quel tiroir de l imprimante on veut im primer le document Par contre si aucun tiroir n est s lectionn PPR va choisir lui m me dans quel tiroir il va lancer l impression par un syst me de s lection automatique 3 Groupes d imprimantes Des groupes d imprimantes peuvent tre cr s Ceci permet de lancer une impression sur un groupe d imprimantes bien pr cises et PPR choisira sur laquelle de ces imprimantes il va lancer l impression A tout moment une imprimante peut tre inclue ou retirer d un groupe 4 Messages Un g n ra
15. 2 NUP Two_per_sheet o 2up Four_per_sheet o 4up Eight_per_sheet o 8up Economy 0 econoon Odd o odd Even o even From_to P No_banner o nb 12 B FICHIERS DE CONFIGURATION 73 B 3 Ips17 0ptions of type 1ps17 printers Properties for Usual Options Select_printer choosePrinter Number_of_copies sheetcount No_banner No_banner Economy Properties for general Option Orientation Portrait Landscape Duplex default 1 Sided 2 Sided Properties for media types Media_size default A4 A5 A3 B5 B4 letter ledger legal Executive US10_envelope DL_en Media_type default Letterhead_paper Drilled_paper Transparencies Gummed_labels Media_source default Upper_input_tray Bottom_input_tray Large_capacity_input_tray M Media_output default Side_tray face_up Lower_tray face_down Mail_box Side_tray To Properties for document options Page_ranges All From_to Number_of_pages_per_sheet default One_per_sheet Two_per_sheet Four_per_sheet B FICHIERS DE CONFIGURATION 74 Command List for printers of type l1ps17 default INTRAY Upper_input_tray o intray top Bottom_input_tray o intray bottom Large_capacity_input_tray o intray lcit Manual_feed_slot o intray manual Envelope_tray o intray envelope NUP One_per_sheet o nup 1 Two_per_sheet o nup 2 Four_per_sheet 0 nup 4 0UTTRAY Side_tray face_up 0 outtray face up Lower_tray face_down o outtray lower Mail_box o outtray mb
16. 2 new FlowLayout FlowLayout LEFT panelCentral32 setLayout 132 labelMediaSource new Label Media Source choiceMediaSource new Choice panelCentral32 add labelMediaSource panelCentral32 add choiceMediaSource choiceMediaSource addItemListener this choiceMediaSource setEnabled false panelCentral33 new Panel panelMedia add panelCentral33 FlowLayout 133 new FlowLayout FlowLayout LEFT panelCentral33 setLayout 133 labelMediaSize new Label Media Size choiceMediaSize new Choice panelCentral33 add labelMediaSize panelCentral33 add choiceMediaSize choiceMediaSize addItemListener this A CODE JAVA choiceMediaSize setEnabled false panelCentral34 new Panel panelMedia add panelCentral34 FlowLayout f134 new FlowLayout FlowLayout LEFT panelCentral34 setLayout 134 labelMediaType new Label Media Type choiceMediaType new Choice panelCentral34 add labelMediaType panelCentral34 add choiceMediaType choiceMediaType addItemListener this choiceMediaType setEnabled false panelCentral35 new Panel panelMedia add panelCentral35 FlowLayout 135 new FlowLayout FlowLayout LEFT panelCentral35 setLayout 135 labelMedia0utput new Label Media Output choiceMediadutput new Choice panelCentral35 add labelMediaOutput panelCentral35 add choiceMediaDutput choiceMedia0utput addItemListener this choiceMe
17. Gestionnaire d impression Ho Dac Phong Hanhardt Fr d ric February 14 2002 CONTENTS Contents 1 Introduction 2 Premi re d marche 2 1 SR PARE 4 5 08 EP Ste tial et eatin M RE met De 2 121 Description toda el gid Ewe Yeh Se 21 2 MCR OW hen A AA Ele ae an 2 1 3 Fonctionnalit s DIF Beso Ms A Ta ER TE a a 21 54 Installations s Susie Se on eos ers DD SOURS ek Lane a a a El de as 2 2 1 A et Ba Die 2 2 2 RL a ne oe ee ede A 2 2 3 Fonctionnalit s DID A BESOINSEH lt a zu 8 tS A md Be a a ees 29 Installation ai sn Se fe Lis ast Seo GMOs ace 2 3 CONCLUSION eta Zone Se ee Pe Se ae Bees A C 3 Deuxi me d marche Debi Description esto e es ARA o R an 3 2 Design et Fonctionnement du programme 3 2 1 Description des classes 3 2 2 Description des Fichiers de Configuration 3 2 3 Description de la GUL Les Sake ee 3 3 Manuel d utilisation e 25 22 a2 a ie el a is 3 3 1 Utilisation G n ral a isis tan a eat 3 3 2 Enlever rajouter une imprimante 3 3 3 Modification du path de lp 22 2 2 4 4 2 Here 3 3 4 Ajouter enlever une option 3 4 Probl mes rencontr s e Ge ey guise Bes 4 Conclusion 5 Remerciements 6 Bibliographie A Code java A 1 Spooler java Eee era al A A 2 PrinterList java 2 Ban PT kee nt L et AS Printerjava ddisg et dame ete Gok eh es LUE CONTENTS 2 A 4 PrinterType java we
18. Group clearListOptions optionsGroup listOptions spooler pageRange checkboxFrom setEnabled false checkboxFrom setState false textfieldFrom setEnabled false textfieldFrom setText textfieldTo setEnabled false textfieldTo setText checkboxOdd setEnabled false checkboxEven setEnabled false checkboxUdd setState true checkboxEven setState true checkboxEconomy setEnabled false checkboxNoBanner setEnabled false checkboxNoBanner setState false checkboxEconomy setState false for int i 0 i lt optionsGroup optionsList size i if collator equals String optionsGroup optionsList get i spooler checkboxFrom A CODE JAVA 60 checkboxFrom setEnabled true for int i 0 i lt optionsGroup optionsList size i if collator equals String optionsGroup optionsList get i spooler checkbox0Odd setEnabled true for int i 0 i lt optionsGroup optionsList size i if collator equals String optionsGroup optionsList get i spooler checkboxEven setEnabled true optionsGroup clearListOptions optionsGroup listOptions spooler checkboxEconomy for int i 0 i lt optionsGroup optionsList size i if collator equals String optionsGroup optionsList get i spooler checkboxEconomy setEnabled true optionsGroup clearListOptions optionsGroup listOptions spooler checkboxNoBanner for int i 0 i lt optionsGroup optionsList size i if collator equals
19. Gummed_labels Media_source default Upper_input_tray Bottom_input_tray Large_capacity_input_tray M Media_output default Side_tray face_up Lower_tray face_down Mail_box Side_tray To Properties for document options Page_ranges A11 From_to Number_of_pages_per_sheet default One_per_sheet Two_per_sheet Four_per_sheet 3 DEUXI ME D MARCHE 17 Exemple d un fichier commandType dat ici commandlps17 dat Command List for printers of type lps17 default INTRAY Upper_input_tray o intray top Bottom_input_tray o intray bottom Large_capacity_input_tray o intray lcit Manual_feed_slot o intray manual Envelope_tray o intray envelope NUP One_per_sheet 0 nup 1 Two_per_sheet o nup 2 Four_per_sheet 0 nup 4 0UTTRAY Side_tray face_up 0 outtray face up Lower_tray face_down 0 outtray lower Mail_box o outtray mb Side_tray o outtray side Top_tray o outtray top Upper_tray o outtray upper SHEETCOUNT sheetcount o sheetcount MEDIA SIZE IS0_A4 0 sheetsize a4 ISO_A5 0 sheetsize a5 IS0_A3 0 sheetsize a3 ISO_B5 0 sheetsize b5 IS0_B4 0 sheetsize b4 US_letter o sheetsize letter US_ledger o sheetsize ledger US_legal o sheetsize legal Executive o sheetsize executive US10_envelope 0 sheetsize business_envelope ISO_DL_envelope o sheetsize dl 7_envelope o sheetsize 7_envelope 3 DEUXI ME D MARCHE 18 SIMPLEX AND DUPLEX 1 Sided o simplex 2 Sided o
20. JAVA 45 A 7 Job java package ch epfl lse impression import java lang import java util import java io x Job est la classe qui permet d excuter une ligne de commande donne lp avec les bons paramtres class Job rpertoire dans lequel se trouve lp public final String lp_command usr bin lp Spooler spooler new Spooler commande lp String job lp_command Liste des fichiers imprimer ArrayList filename new Arraylist String contenant tous les fichiers imprimer String files Variable modifie par la GUI pour le checkbox printAll String printAll Variable modifie par la GUI pour le checkbox economy boolean economy Variable modifie par la GUI pour le checkbox noBanner boolean noBanner Variable modifie par la GUI pour le checkbox odd boolean odd Variable modifie par la GUI pour le checkbox even boolean even Variable modifie par la GUI pour le checkbox orientation String orientation Variable modifie par la GUI pour le choice duplex String duplex Variable modifie par la GUI pour le textfield numberPages String numberPages A CODE JAVA 46 Variable modifie par la GUI pour le checkbox range boolean range Variable modifie par la GUI pour le textfield printFrom String printFron Variable modifie par la GUI pour le checkbox printTo String printTo Variable modifie par la GUI
21. ageCount getlpPath System out println lpPath dat contains pageCount loadlpPath f new GuiFrame job f setVisible true f pack A CODE JAVA 30 A 2 PrinterList java package ch epfl lse impression import java util import java io x xPrinterList est une classe qui permet de charger la liste des imprimantes class PrinterList Spooler spooler new Spooler Printer printer new Printer Table de Hash des noms et types des imprimantes static Properties printerList new Properties Liste des nom des imprimantes static ArrayList printerNameList new Arraylist Enumeration e Charge la liste des imprimantes partir d un fichier printerlist dat void loadPrinterList try Class pl this getClass InputStream resource_stream pl getResourceAsStream spooler printerLis printerList load resource_stream catch FileNotFoundException e System out println File spooler printerListDat not found catch IOException e e printStackTrace try catch Cherche le type d une imprimante partir de son nom A CODE JAVA 31 param printerName Le nom de l imprimante return Le type de l imprimante String getPrinterType String printerName String type printerList getProperty printerName return type Charge tous les noms des imprimantes dans une liste return la liste contenant l
22. al Panel panelSouth1 panelSouth2 Panel panelGeneral panelPrintRange panelMedia Panel panelCentral12 panelCentral13 panelCentral14 Panel panelCentral22 panelCentral23 panelCentral24 panelCentral25 Panel panelCentral31 panelCentral32 panelCentral33 panelCentral34 panelCent Label labelNorth1 labelNorth2 labelWest labelGeneral labelPrintRange label Label labelDuplex labelNumberPages Label labelTo label0 N labelNumberCopies Label labelCommenti labelComment2 Label labelMediaSource labelMediaSize labelMediaType labelMedia0utput Label labelRequest List listPrinters Choice choiceDuplex choiceNumberPages Choice choiceMediaSource choiceMediaSize choiceMediaType choiceMedia0utput Button buttonPrint buttonCancel Checkbox checkboxPortrait checkboxLandscape Checkbox checkboxAll checkboxFrom checkbox0dd checkboxEven Checkbox checkboxEconomy checkboxNoBanner TextField textfieldFrom textfieldTo textfieldNumberCopies PrinterList printerList new PrinterList OptionsGroup optionsGroup new OptionsGroup Spooler spooler new Spooler Job job Options options Collator collator Collator getInstance LogoCanvas logoCanvas A CODE JAVA 90 PageCount pageCount Font f1 new Font Lucida Handwriting Font BOLD 16 Font f3 new Font Lucida Handwriting Font BOLD 14 Font f2 new Font TimesRoman Font BOLD 14 Font f4 new Font TimesRoman Font ITALIC 14 Color
23. apt aux imprimantes r centes Il s agit donc de mettre en place un syst me interactif permettant de contr ler les diverses options des imprimantes 2 Premi re d marche La premi re d marche entreprise fut de faire une recherche sur une internet www sourceforge net www freshmeat net pour trouver les projets existants allant dans le sens de celui du LSE Nous avons trouv plusieurs projets correspondant aux exigences comme par exemple e PPR http ppr trincoll edu e CUPS http www cups org e Kprima http www tuhlmann purespace de projects kprima e LPRng http lprng sourceforge net e pdq http pdq sourceforge net e GNUlpr http lpr sourceforge net e xprintutil http freshmeat net projects xprintutil e Lanzadera http www maderassoriano com linux 2 PREMI RE D MARCHE 4 Parmi tous ces projets les deux premiers projets PPR CUPS ont retenus particuli rement notre attention et ceci pour plusieurs raisons ils r pondent tous les besoins demand s ils sont tr s complets et surtout ils ont une documentation tr s d taill e ce qui est tr s important dans l optique de l utilisation de l un de ces projets Pour le choix de l un de ces deux projets nous avons fait une description d taill e de chacun d eux afin de d terminer leurs points forts et leurs points faibles respectifs 2 1 PPR 2 1 1 Description PPR est un gestionnaire d impression multi plateformes
24. as d faut lors du lancement de la commande Configure 2 2 CUPS 2 2 1 Description CUPS est un programme relativement nouveau la premi re version date d Octobre 1999 il a t d velopp par Easy Software Products dans le but de promouvoir un nouveau standard d impression sur les plateformes Unix CUPS fonctionne sur quasiment toutes les distributions Unix linux AIX 2 PREMI RE D MARCHE 9 Axon Linux Caldera Conectiva Debian easyLinux FreeBSD HP UX IRIX Linux Mandrake MIZI Peanut Red Hat Solaris SuSE Tru64 UNIX TurboLinux CUPS ne comporte pas d interface graphique seule la version commerciale ESP Print Pro comprend une interface graphique cependant il existe d autres programmes compatibles avec CUPS qui viennent rajouter une interface graphique QtCUPS KUPS etc Cependant CUPS comporte un outil d administration accessible depuis un navigateur Internet lorsque CUPS est ex cut 2 2 2 Design CUPS est bas sur le protocole IPP IPP Internet Printing Protocol est une nouvelle technologie bas e sur http destin e remplacer les syst mes propri taires d impression Pour cela IPP utilise une m thode simple consis tant envoyer les impressions d un ordinateur une imprimante connect e au r seau IP En d veloppement depuis 1996 IPP a le support de plus de 25 entreprises dont Microsoft Novell IBM Xerox Lexmark et Hewlett Packard CUPS propose une interfac
25. atic Properties optionsGroup new Properties Table de Hash qui associe une option un nom de groupe static Properties tokenizedOptionsGroup new Properties Liste contenant les options d un groupe static ArrayList optionsList new ArrayList Enumeration e Charge la description d une imprimante ses options classes en groupes dans une Properties La cl correspond au groupe et la valeur correspond toutes les o param type Le type de l imprimante Properties buildOptions String type try Class pl this getClass InputStream fis pl getResourceAsStream type dat optionsGroup load fis catch FileNotFoundException e T System out println File type dat not found A CODE JAVA 37 catch IOException e e printStackTrace buildTokenizedOptionsGroup return optionsGroup pex Charge les options de l imprimante dans une Properties mais dans l ordre invers La cl correspond l option et la valeur correspond au groupe Utile pour savoir quel groupe appartient une option Oparam type Le type de 1 imprimante Properties buildTokenizedOptionsGroup e optionsGroup propertyNames while e hasMoreElements String typeName String e nextElement StringTokenizer st new StringTokenizer optionsGroup getProperty type while st hasMoreTokens tokenizedOptionsGroup setProperty st nextToken typeName return tokenizedOptionsGroup
26. ault Ainsi la ligne de commande pour lp contient un minimum d arguments 4 CONCLUSION 25 A Conclusion Les objectifs du projet nous semblent atteints en effet le programme g rant l infrastructure d impression fonctionne Il est facilement configurable grace aux fichiers de configuration simples et en mode texte De plus l utilisation de ce programme est assez conviviale Les am liorations possibles du projet pourraient tre les suivantes e Une interface graphique plus modulable facilitant le rajout suppression de nouvelles options e L int gration des fichiers PPD Poscript Printer Description qui per mettraient de connaitre les options disponibles de l imprimante et ainsi faciliter l int gration de nouvelles imprimantes Ce projet nous a donn l opportunit de d velopper une application r elle et complete et ceci d une mani re relativement autonome Ce projet nous a galement permis de consolider nos connaissances relatives au processus Ip et aux processus d impressions en g n ral Il nous a galement permis d largir nos connaissances en Java par exemple en ce qui concerne les exec ge tRessource pipe et Flux de donn es afin de coder une application r elle robuste Nous nous sommes galement familiariser avec l outil fort int ressant qu est LaTex pour la cr ation du rapport 5 Remerciements Nous voulons remercier le laboratoire LSE pour nour avoir donner la po
27. borderLayout s pare la fen tre en quatre parties partie nord partie ouest partie centrale et partie sud La partie nord Panel panelNorth est compos e du titre et du logo de l EPFL la partie ouest Panel panelWest est compos e d une liste compor tant toutes les imprimantes g r es par le gestionnaire d impression La partie sud Panel panelSouth est compos e des deux boutons Print et Cancel ainsi que d un Label indiquant le s document s imprimer enfin la partie centrale Panel panelCentral regroupe toutes les options g rant l impression Cette derni re partie fera l objet plus loin d une description plus approfondie La partie central g r e par un FlowLayout est compos de trois panneaux Panel panelGeneral Panel panelPrintRange et Panel panelMedia qui repr sentent chacun un type d options d impression Le premier panneau regroupe les options g n rales orientation recto verso etc le deuxi me les options permettant de selectionner la partie imprimer nombre de copies page paire impaire etc et le troisi me les options permettant de contr ler l imprimante elle m me mode economy normal tiroir d entree et tiroir de sortie etc 3 DEUXI ME D MARCHE 20 panelSouth Printare panelGeneral panelPrintRange panelMedia panelWest panelCentral panelNorth Figure 8 Structure de l interface graphique 3 3 Manuel d utilisation Ce manuel d crit les principales fonctions de
28. diadutput setEnabled false this addWindowListener this public void windowClosing WindowEvent e System exit O0 public void windowOpened WindowEvent e public void windowClosed WindowEvent e public void windowlconified WindowEvent e public void windowDeiconified WindowEvent e public void windowActivated WindowEvent e public void windowDeactivated WindowEvent e mthode qui ragit au action des diffrents boutons de 56 l interface graphique A CODE JAVA 97 param e l vnement correspondant une action sur un bouton de l interface gr public void actionPerformed ActionEvent e Object o e getSource if o instanceof Button Button b Button o if b buttonCancel System exit 0 if b buttonPrint if checkboxLandscape getState job orientation spooler checkboxLandscape else job orientation spooler checkboxPortrait job duplex choiceDuplex getSelectedItem job numberPages choiceNumberPages getSelectedItem if checkboxFrom getState job range true job printFrom textfieldFrom getText job printTo textfieldTo getText else job range false job odd checkboxOdd getState job even checkboxEven getState job economy checkboxEconomy getState job noBanner checkboxNoBanner getState job numberCopies textfieldNumberCopies getText job mediaSource choiceMediaSource getSelectedItem j
29. e end of pipe code InputStream lp_response process getInputStream int c String result do c lp_response read if c gt 0 result char c while c gt 0 GuiFrame2 f2 new GuiFrame2 result f2 pack f2 setVisible true int status process waitFor if status lt 0 System err println did not finish correctly else System out println Printer Response result F1 catch IndexOutOfBoundsException e System err println Usage java ExecTest command args System exit 1 A CODE JAVA 48 catch InterruptedException e System err println problem with 1p e getMessage System exit 1 catch Exception e System err println Error e toString System exit 1 printLine clear Permets de rajouter un ou des fichiers imprimer S il y a plusieurs fichiers les fichiers doivent tre sparer par un point virgule Mthode non utilise pour le moment void browseFile String browsedFile filename clear filename add browsedFile T A CODE JAVA 49 A 8 GuiFrame java GuiFrame est une classe qui gnre l interface graphique du programme package ch epfl lse impression import java awt import java awt event import java text import java net class GuiFrame extends Frame implements ActionListener WindowListener ItemListene Panel panelWest panelSouth panelNorth paneleEast panelCentr
30. e process getInputStream int c dof c which_response read if c gt 0 result char c while c gt 0 A CODE JAVA 66 catch IOException e System out println problem with getting lp Path try FileWriter fw new FileWriter lpPath dat fw write result fw close catch I0Exception e System out println Error while writing in lpPath dat return result Charge le Path de lp depuis le fichier lpPath dat String loadlpPath String lpPath try 1 Class pl this getClass InputStream file pl getResourceAsStream spooler lpPath int c do c file read if c gt 0 lpPath char c while c gt 0 file close catch I0Exception e System out println Unable to read from file spooler lpPath return lpPath B FICHIERS DE CONFIGURATION 67 B Fichiers de Configuration B 1 hp2100 0ptions of hp2100 printers Properties for Usual Options Select_printer PrintTo Number_of_copies MultipleCopies Properties for general Options Orientation Portrait Landscape Duplex default 1 Sided 2 Sided_long_edge 2 Sided_short_edge 2 Sided_manual Properties for media types Media_size default A4 A3 A5 A6 B5 IS0 Legal Letter Executive Media_type default Plain Preprinted Letterhead Transparency Prepunched Labels Bond Media_source default tray_1 tray_2 tray_3 manual Media_output default bin1 bin2 Economy Economy No_banner N
31. e moderne et complete pour le syst me UNIX Il est adaptable pour de futures imprimantes drivers ou protocoles tout en offrant la compatibilit avec les programmes UNIX existants Comme la plupart des autres systemes d impression CUPS est construit au tour d un processus d impression qui s pare les travaux d impressions De mani re simplifi e on peut repr senter le sch ma de fonctionnement de CUPS comme cela Processus d impression Figure 4 Sch ma fonctionnel de CUPS 2 PREMI RE D MARCHE 10 Processus d impression Le processus d impression est une application serveur http 1 1 qui contr le les requ tes Il tient jour une liste des imprimantes disponibles sur le LAN et s pare les travaux d impressions en utilisant les filtres requis Fichier de configuration Le fichier de configuration peut tre par exemple un fichier PPD Un fichier PPD est un fichier d crivant toutes les capacit s d une imprimante CUPS API L API CUPS contient toutes les fonctions n cessaires pour faire entrer les impressions dans la file d attente obtenir les informations de l imprimante manipuler les fichiers PPD Filtres et CUPS Imaging Ces deux parties permettent de convertir manipuler des fichiers de grande taille r duire ou agrandir les images sans effort suppl mentaire pour l utilisateur Backends Le Backends r alise la tache finale c est dire envoyer le document filtr l imprimante
32. e nom de toutes les imprimantes ArrayList getPrinterByName e printerList propertyNames while e hasMoreElements String printerName String e nextElement printerNameList add printerName return printerNamelist T Construit une imprimante groupes d options et options param printerName Le nom de l imprimante void createPrinter String printerName String printerType getPrinterType printerName printer buildPrinter printerName printerType T Charge une imprimante depuis le fichier preferences dat Voir aussi savePrinter A CODE JAVA 32 Mthode non utilise pour le moment void loadPrinter String printerName try FileReader file new FileReader spooler preferences int c do c file read if c gt 0 printerName char c while c gt 0 file close createPrinter printerName catch I0Exception e System out println Unable to read from file spooler preferences A CODE JAVA 39 A 3 Printer java package ch epfl lse impression import java util import java io Printer est une classe permettant de construire les imprimantes partir de leur de sauver ou charger une imprimante class Printer PrinterType printerType new PrinterType Construit une imprimante groupes d options et options param printerName Le nom de l imprimante param type Le type de
33. eckboxEven new Checkbox Even true panelCentral24 add checkbox0dd checkboxOdd addItemListener this checkboxOdd setEnabled false panelCentral24 add checkboxEven checkboxEven addItemListener this checkboxEven setEnabled false panelCentral25 new Panel panelPrintRange add panelCentral25 FlowLayout 125 new FlowLayout FlowLayout LEFT panelCentral25 setLayout 125 labelNumberCopies new Label number of copies textfieldNumberCopies new TextField textfieldNumberCopies setEnabled false panelCentral25 add labelNumberCopies panelCentral25 add textfieldNumberCopies textfieldNumberCopies addActionListener this A CODE JAVA 99 Panel Media Settings GridLayout glCentral3 new GridLayout 6 0 panelMedia setLayout glCentral3 labelMedia new Label Media Settings panelMedia add labelMedia labelMedia setFont f2 panelCentral31 new Panel FlowLayout 131 new FlowLayout FlowLayout LEFT panelCentral31 setLayout 131 checkboxEconomy new Checkbox Economy panelCentral31 add checkboxEconomy checkboxEconomy addItemListener this checkboxEconomy setEnabled false checkboxNoBanner new Checkbox No Banner panelCentral31 add checkboxNoBanner checkboxNoBanner addItemListener this checkboxNoBanner setEnabled false panelMedia add panelCentral31 panelCentral32 new Panel panelMedia add panelCentral32 FlowLayout 13
34. elWest add panelWest2 listPrinters addItemListener this partie sud panelSouth new Panel GridLayout glSouth new GridLayout 2 0 panelSouth setLayout glSouth add panelSouth South panelSouthi new Panel panelSouth add panelSouth1 FlowLayout flSouthi new FlowLayout panelSouth1 setLayout flSouth1 buttonPrint new Button Print buttonPrint addActionListener this buttonPrint setEnabled false buttonCancel new Button Cancel buttonCancel addActionListener this panelSouth1 add buttonPrint panelSouth1 add buttonCancel panelSouth2 new Panel panelSouth add panelSouth2 FlowLayout flSouth2 new FlowLayout panelSouth2 setLayout flSouth2 labelCommenti new Label document to print panelSouth2 add labelComment1 A CODE JAVA 92 labelComment2 new Label job files labelComment2 setFont f4 panelSouth2 add labelComment2 partie central panelCentral new Panel FlowLayout f1 new FlowLayout FlowLayout LEFT panelCentral setLayout fl add panelCentral Center panelGeneral new Panel panelPrintRange new Panel panelMedia new Panel panelCentral add panelGeneral panelCentral add panelPrintRange panelCentral add panelMedia Panel General Options GridLayout glCentrali new GridLayout 4 0 panelGeneral setLayout glCentral1 labelGeneral new Label General Options labelGeneral setFont f2
35. et les envoies Job void sendToJob ArrayList buf new ArrayList if job printerName null buf add choosePrinter job printerName if job orientation null amp amp getCommand job orientation null buf add getCommand job orientation if job duplex null amp amp getCommand job duplex null buf add getCommand job duplex if job numberPages null amp amp getCommand job numberPages null buf add getCommand job numberPages if job mediaSource null amp amp getCommand job mediaSource null buf add getCommand job mediaSource if job mediaOutput null amp amp getCommand job mediadutput null buf add getCommand job mediaOutput A CODE JAVA 42 if job mediaSize null amp amp getCommand job mediaSize null buf add getCommand job mediaSize if job mediaType null amp amp getCommand job mediaType null buf add getCommand job mediaType if job numberCopies null amp amp multipleCopies null buf add multipleCopies if job range amp amp job printFrom null amp amp job printTo null amp amp printFromTo null buf add printFromTo if job odd amp amp job even buf add getCommand spooler checkboxOdd if job even amp amp job odd buf add getCommand spooler checkbox Even if job economy amp amp getCommand spooler checkboxEconomy null buf add getCommand spooler checkbo
36. in mes ee LASER LUS Su 35 Ao OptionsGroup java amp Se ied ee ee Be Go Se 36 A 6 O BHO ANA ra Ke aside rate a ee 40 AT JOAO Sk AENA nr ee ese ike RS a 0 N 45 A8 GuiFrame java 4 Hu Son AR PES 49 AQ PageCount TANT 0 ee O ned 64 B Fichiers de Configuration 67 Be IT EN ee a ee de EAR 67 BI DO O ie A 70 Bis SEE no E a EP EN ee 73 BE IAA ats te Gerd NT et even he WG a 75 1 INTRODUCTION 3 1 Introduction Depuis la cr ation d UNIX l impression constitue une des limites majeures de ce syst me d exploitation Contrairement d autres syst mes d exploitation comme Windows ou Mac OS UNIX ne poss de ni d interface ni de syst me standard pour les imprimantes Parmi les solutions existantes ce probleme celle du groupe BSD Berkeley et System V sont les plus courantes Cepen dant la plupart des ces gestionnaires d impression s ex cutent partir d une ligne de commande plut t basique et peu conviviale La configuration des imprimantes sur UNIX est plut t compliqu e et il serait plus commode de pouvoir choisir ses options d impressions imprimante papier mise en page d une mani re graphique C est dans ce contexte le Laboratoire de Syst mes d Exploitations disposant de plusieurs imprimantes postscripts dot es de capacit s vari es tiroirs mul tiples couleurs transparents recto verso etc a dit ce projet pour rem placer l ancien gestionnaire d impression PKLP qui n tait plus ad
37. l imprimante void buildPrinter String printerName String type printerType buildPrinterType type Sauve l imprimante dans un fichier Cette mthode peut tre utilis pour mettre une imprimante par dfaut Voir aussi loadPrinter param printerName Le nom de l imprimante void savePrinter String printerName try FileWriter fw new FileWriter preferences dat fw write printerName fw close catch I0Exception e System out println Error while writing in preferences dat A CODE JAVA 34 A CODE JAVA 39 A 4 Printer Type java package ch epfl lse impression import java util import java io Classe relative au type de l imprimante permet de construire le type d une impr class PrinterType OptionsGroup optionsGroup new OptionsGroup Options options new Options Construit une imprimante partir de son type uniquement param type Le type de l imprimante void buildPrinterType String type optionsGroup buildOptions type options buildCommand type A CODE JAVA 36 A 5 OptionsGroup java package ch epfl lse impression import java util import java io OptionsGroup contient toutes les options d une imprimante ordonnes par groupes par ex Orientation Portrait Landscape class OptionsGroup x Options options new Options Table de Hash qui associe les noms de groupes aux options st
38. ment de 1p class PageCount Spooler spooler new Spooler Job job commande pour retrouver le nombre de pages dans un document PS String grep grep Pages variable contenant le nombre de pages du document imprimer String nbPages PageCount Job job this job job Cherche le nombre de pages du document envoy la ligne de commande avec la commande UNIX grep return le nombre de pages du document String getnbPages for int i 0 i lt job filename size i String file String job filename get i String command grep file try Runtime runtime Runtime getRuntime Process process runtime exec command InputStream grep_response process getInputStream A CODE JAVA 65 int c String result do c grep_response read if c gt 0 result char c while c gt 0 StringTokenizer st new StringTokenizer result 4Pages while st hasMoreTokens nbPages String st nextToken catch IOException e System out println problem with grep return nbPages ek Cherche le chemin pour la commande lp par la commande UNIX which Ecrit le chemin trouv dans le fichier lpPath dat return chemin de lp String getlpPath String result String command which lp try Runtime runtime Runtime getRuntime Process process runtime exec command InputStream which_respons
39. ng comp options getCommand e if comp null System out println Missing Command for e A CODE JAVA 40 A 6 Options java package ch epfl lse impression import java util import java io import java text Options contient les commandes d une imprimante Cette classe envoie galement les bonnes commandes Job class Options Job job Spooler spooler new Spooler static Properties commandList new Properties String optionCommand Collator cl Collator getInstance String nbCopies String printFromTo String line Options O Options Job job this job job Charge toutes les commandes des options d une imprimante partir d un fichie param type Le type de l imprimante M Properties buildCommand String type try Class pl this getClass InputStream fis pl getResourceAsStream spooler commandDat type dat commandList load fis catch FileNotFoundException e A CODE JAVA 41 System out println File spooler commandDat type dat not found catch I0Exception e e printStackTrace T return commandList pex Permets de retrouver la commande d une option param optionName Le nom de l option return La commande de l option String getCommand String optionName String command commandList getProperty optionName return command pex Cherche toutes les commandes des options
40. nt Range panelPrintRange add labelPrintRange labelPrintRange setFont f2 panelCentral22 new Panel FlowLayout 122 new FlowLayout FlowLayout LEFT panelCentral22 setLayout 122 checkboxAll new Checkbox All true panelCentral22 add checkboxAll checkboxAll setEnabled false checkboxAll addItemListener this panelPrintRange add panelCentral22 panelCentral23 new Panel panelPrintRange add panelCentral23 FlowLayout 123 new FlowLayout FlowLayout LEFT panelCentral23 setLayout 123 checkboxFrom new Checkbox From false textfieldFrom new TextField textfieldFrom setEnabled false labelTo new Label To Label CENTER A CODE JAVA 94 textfieldTo new TextField y textfieldTo setEnabled false String s pageCount getnbPages if collator equals s label0fN new Label s Label CENTER else label0fN new Label of s Label CENTER panelCentral23 add checkboxFrom checkboxFrom setEnabled false checkboxFrom addItemListener this panelCentral23 add textfieldFrom textfieldFrom addActionListener this panelCentral23 add labelTo panelCentral23 add textfieldTo textfieldTo addActionListener this panelCentral23 add label0fW panelCentral24 new Panel panelPrintRange add panelCentral24 FlowLayout 124 new FlowLayout FlowLayout LEFT panelCentral24 setLayout 124 checkboxOdd new Checkbox Odd true ch
41. nte dans le fichier printerList dat hp6100 hp2100 Aucune imprimante correspond au m me type que l imprimante ra jouter l cette fois ci il faut rajouter une ligne dans le fichier print erList dat avec le nom de l imprimante et le type de l imprimante rajouter comme on l a d j fait dans le cas pr c dent mais cette fois ci le type de l imprimante est nouveau Ensuite il faut cr er deux fichiers printer_type dat et commandprinter_type dat en suivant le mod le expos au chapitre 3 2 2 3 3 3 Modification du path de Ip Pour modifier le path de Ip il suffit de modifier le fichier IpPath dat et d inscrire le nouveau path de lp la place de l ancien En effet dans ce fichier la seule ligne pr sente est le path de lp par exemple usr bin Ip Si louverture du programme le message Warning lpPath dat may not contain the correct path for lp apparait sur le terminal cela veut dire que le path de Ip est mal configur Il s agit dans ce cas de modifier ce path dans le fichiers IpPath dat 3 3 4 Ajouter enlever une option L op ration d enlever ajouter une option d impression n cessite des modifi cations dans les fichiers de configuration mais aussi dans certain cas dans le code lui m me Enlever une option Pour enlever une option d impression une imprimante il suffit de modifier les deux fichiers de configurtion correspondant l imprimante En effe
42. o_banner Properties for document options Page_ranges All From_to Number_of_pages_per_sheet default One_per_sheet Two_per_sheet Four_per_sheet Eight_ B FICHIERS DE CONFIGURATION Command List for printers hp4100 default choosePrinter d MultipleCopies n ORIENTATION Portrait o portrait Landscape o landscape SIMPLEX AND DUPLEX 1 Sided o simplex 2 Sided_long_edge o duplex 2 Sided_short_edge o hduplex 2 Sided_manual o mduplex MEDIA SIZE A4 o0 A4 A3 0 A3 Ab 0 A5 A6 0 A6 B5 150 0 B5 JIS Legal 0 legal Letter 0 letter Executive 0 exec MEDIA TYPE Plain 0 mtypePlain Preprinted 0 mtypePreprinted Letterhead 0 mtypeLetterhead Transparency 0 mtypeTransparency Prepunched 0 mtypePrepunched Labels 0 mtypeLabels Bond o mtypeBond Recycled 0 mtypeRecycled Color 0 mtypeColor CardStock 0 mtypeCardStock Rough o mtypeRough Vellum o mtypeVellum MEDIA SOURCE manual o manual tray_1 0 trayl tray_2 o tray2 tray_3 o tray3 MEDIA OUTPUT 68 B FICHIERS DE CONFIGURATION bini o bini bin2 o bin2 NUP Two_per_sheet o 2up Four_per_sheet o 4up Eight_per_sheet o 8up Economy 0 econoon Odd o odd Even o even From_to P No_banner o nb 69 B FICHIERS DE CONFIGURATION 70 B 2 hp4100 0ptions of hp2100 printers Properties for Usual Options Select_printer PrintTo Number_of_copies MultipleCopies Properties for general Options Orientation Po
43. ob mediaSize choiceMediaSize getSelectedItem job mediaType choiceMediaType getSelectedItem job mediadutput choiceMediaQutput getSelectedItem job printerName listPrinters getSelectedItem options sendToJob this hide mthode qui ragit au action des diffrentes listes de l interface graphique param e l vnement correspondant un changement de selection d une liste de A CODE JAVA 58 public void itemStateChanged ItemEvent e Object o e getSource if o instanceof List List 1 List o if 1 listPrinters String labelChoice 1 getSelectedItem printerList createPrinter labelChoice choiceDuplex removeAll choiceNumberPages removeAll choiceMediaSource removeAll choiceMediaSize removeAll choiceMediaType removeAll choiceMedia0 utput removeAll optionsGroup clearListOptions optionsGroup listOptions spooler choiceDuplex for int i 0 i lt optionsGroup optionsList size i choiceDuplex add String optionsGroup optionsList get i choiceDuplex setEnabled true optionsGroup clearListOptions optionsGroup listOptions spooler choiceNumberPages for int i 0 i lt optionsGroup optionsList size i choiceNumberPages add String optionsGroup optionsList get i choiceNumberPages setEnabled true optionsGroup clearListOptions optionsGroup listOptions spooler choiceMediaSource for int i 0 i lt optionsGroup o
44. panelGeneral add labelGeneral panelCentral12 new Panel panelGeneral add panelCentral12 FlowLayout f112 new FlowLayout FlowLayout LEFT panelCentral12 setLayout 112 checkboxPortrait new Checkbox Portrait true checkboxLandscape new Checkbox Landscape false panelCentral12 add checkboxPortrait checkboxPortrait setEnabled false checkboxPortrait addItemListener this panelCentral12 add checkboxLandscape checkboxLandscape setEnabled false checkboxLandscape addItemListener this panelCentral13 new Panel panelGeneral add panelCentral13 FlowLayout f113 new FlowLayout FlowLayout LEFT panelCentral13 setLayout 113 labelDuplex new Label Duplex A CODE JAVA 93 panelCentral13 add labelDuplex choiceDuplex new Choice panelCentral13 add choiceDuplex choiceDuplex addItemListener this choiceDuplex setEnabled false panelCentrali4 new Panel panelGeneral add panelCentral14 FlowLayout f114 new FlowLayout FlowLayout LEFT panelCentral14 setLayout 114 labelNumberPages new Label Number of pages per sheet panelCentral14 add labelNumberPages choiceNumberPages new Choice panelCentral14 add choiceNumberPages choiceNumberPages addItemListener this choiceNumberPages setEnabled false Panel Print Range GridLayout glCentral2 new GridLayout 5 0 panelPrintRange setLayout glCentral2 labelPrintRange new Label Pri
45. pases Number of pages per sheet Jose D Mesa te res z Figure 9 Interface graphique du programme apr s selection de l imprimante 3 3 2 Enlever rajouter une imprimante L op ration d enlever rajouter une imprimante ne n cessite que des modifi cations au niveau des fichier de configuration Enlever une imprimante Pour supprimer une imprimante il faut supprimer dans le fichiers print erList dat la ligne correspondante l imprimante supprimer Il faut galement supprimer les fichiers printer type dat et commandprinter type dat par exemple hp2100 dat et commandhp2100 dat seulement si au cune imprimante du m me type n est utilis ee Cette derni re op ration n est pas n cessaire au bon fonctionnement du programme mais les deux fichiers pr cit s supprimer ne sont plus utiles et sont donc supprimer 3 DEUXI ME D MARCHE 22 Rajouter une imprimante Pour rajouter une imprimante deux cas se pr sentent e Il y a d j une imprimante du m me type avec les m mes options dans le laboratoire et l il suffit de rajouter une ligne dans le fichier print erList dat avec le nom de l imprimante et le type de l imprimante le m me que celle de m me type d j pr sente dans le laboratoire s par par un espace Par exemple si on veut rajouter l imprimante hp6100 et qu elle est du m me type que l imprimante hp2100 il s agit d ajouter la ligne suiva
46. ptionsList size i choiceMediaSource add String optionsGroup optionsList get i choiceMediaSource setEnabled true optionsGroup clearListOptions optionsGroup listOptions spooler choiceMediaSize for int i 0 i lt optionsGroup optionsList size i choiceMediaSize add String optionsGroup optionsList get i choiceMediaSize setEnabled true optionsGroup clearListOptions optionsGroup listOptions spooler choiceMediaType for int i 0 i lt optionsGroup optionsList size i choiceMediaType add String optionsGroup optionsList get i A CODE JAVA 99 choiceMediaType setEnabled true optionsGroup clearListOptions optionsGroup listOptions spooler choiceMedia0utput for int i 0 i lt optionsGroup optionsList size i choiceMediaOutput add String optionsGroup optionsList get i choiceMediaOutput setEnabled true checkboxPortrait setEnabled true checkboxPortrait setState true checkboxAll setEnabled true checkboxAll setState true buttonPrint setEnabled true textfieldNumberCopies setEnabled true textfieldNumberCopies setText 1 checkboxLandscape setEnabled false checkboxLandscape setState false optionsGroup clearListOptions optionsGroup listOptions spooler orientation for int i 0 i lt optionsGroup optionsList size i if collator equals String optionsGroup optionsList get i spooler checkboxLan checkboxLandscape setEnabled true options
47. rtrait Landscape Duplex default 1 Sided 2 Sided_long_edge 2 Sided_short_edge 2 Sided_manual Properties for media types Media_size default A4 A3 A5 A6 B5 IS0 Legal Letter Executive Media_type default Plain Preprinted Letterhead Transparency Prepunched Labels Bond Media_source default tray_1 tray_2 tray_3 manual Media_output default bin1 bin2 Economy Economy No_banner No_banner Properties for document options Page_ranges All From_to Number_of_pages_per_sheet default One_per_sheet Two_per_sheet Four_per_sheet Eight_ B FICHIERS DE CONFIGURATION Command List for printers hp4100 default choosePrinter d MultipleCopies n ORIENTATION Portrait o portrait Landscape o landscape SIMPLEX AND DUPLEX 1 Sided o simplex 2 Sided_long_edge o duplex 2 Sided_short_edge o hduplex 2 Sided_manual o mduplex MEDIA SIZE A4 o0 A4 A3 0 A3 Ab 0 A5 A6 0 A6 B5 150 0 B5 JIS Legal 0 legal Letter 0 letter Executive 0 exec MEDIA TYPE Plain 0 mtypePlain Preprinted 0 mtypePreprinted Letterhead 0 mtypeLetterhead Transparency 0 mtypeTransparency Prepunched 0 mtypePrepunched Labels 0 mtypeLabels Bond o mtypeBond Recycled 0 mtypeRecycled Color 0 mtypeColor CardStock 0 mtypeCardStock Rough o mtypeRough Vellum o mtypeVellum MEDIA SOURCE manual o manual tray_1 0 trayl tray_2 o tray2 tray_3 o tray3 MEDIA OUTPUT 71 B FICHIERS DE CONFIGURATION bini o bini bin2 o bin
48. s il nous a t impossible de les utiliser et ceci pour pour plusieurs raisons premi rement ces programmes n utilisent pas la commande lp sans la modifier CUPS ou ne l utilisent pas du tout PPR et ceci s est r v r tre une exigence dans notre pro jet Deuxi mement ces deux programmes exigaient pour tre install s que l utilisateur soit root ce qui nous a pas t accord par l administrateur 3 DEUXI ME D MARCHE 12 3 Deuxi me d marche 3 1 Description C est pour toutes les raisons cits dans la conclusion et apr s une nouvelle recherche sur internet sur les sites www sourceforge net et www freshmeat net pour trouver des projet qui se mettaient en frontend de lp que nous avons d cid avec notre assistant de coder nous m mes le gestionnaires d impression en Java Le programme se compose de 4 parties principales Fichier Postcript Job Fichiers de Configuration Figure 5 Sch ma de fonctionnement g n ral du programme e L interface Graphique qui permet l utilisateur d interagir avec le pro gramme e Les fichiers de configuration e L application qui envoie les bons param tres Ip e Le travail d impression Job 3 2 Design et Fonctionnement du programme Le corps du programme est divis en cinq classes d crites dans la section suivante la hi erarchie des classes est faite d une mani re r cursive de l objet 3 DEUXI ME D MARCHE 13
49. s de Configuration printer Type dat Options java Options java charge en m moire les commandes associ es aux options de l imprimante partir d un fichier voir Description des Fichiers de Configu ration commandType dat Cette classe retrouve galement les commandes des options pour les envoyer en travaux d impression Job java Tout fichier ou groupe de fichiers envoy s l imprimante est appel un job Job java construit la ligne de commande qu il va envoyer Ip soit directement soit travers un pipe L ex cution de Ip se fait dans cette classe PageCount java Cette classe r unit quelques fonctions utiles telles que chercher le nombre de pages d un document ps ou encore peut aller chercher le chemin la com mande lp Ceci se fait soit de mani re directe ou l aide de commandes UNIX Spooler java Spooler java contient la m thode main elle lance l interface graphique ainsi que la liste des imprimantes cherche la commande lp La m thode main peut prendre plusieurs arguments qui correspondent aux noms des fichiers imprimer A noter que les noms des fichiers de configuration ou des noms de groupes peuvent tre modifi s dans cette classe 3 2 2 Description des Fichiers de Configuration Les fichiers de configuration sont stock s dans des Properties java util qui associe chaques cl s une valeur Nous avons deux sortes de fichiers diff rents Le premier type de fichiers d crit
50. s le code En effet il faut cr er dans l interface graphique un l ment bouton ou liste qui repr sente l option ajouter Ensuite il faut cr er une variable dans la classe job java qui repr sente l tat de l option activ d sactiv ou selectionn e non selectionn e et lui affecter dans la classe GuiFrame la bonne valeur et ceci lorsque l utilisateur clique sur le bouton Print Il faut galement modifier la m thode sendToJob dans la classe Options afin que cette m thode ait chercher l tat de la variable repr sentant l option ajouter pour la rajouter la ligne de com mande 3 4 Probl mes rencontr s Les probl mes que nous avons rencontr taient surtout li s aux imprimantes et o au fonctionnement parfois instable de lp pour certaines options En effet certaines options comme le page range refusent de fonctionner Il faut parfois les remplacer par le page range sp cifique de l imprimante en ques tion Nous avons galement rajout une option default pour toutes les options disponibles dans l interface graphique car nous avons constat que lorsque l on envoyait trop d arguments l imprimante des plantages pouvaient sur venir selon le fichier imprimer L option default est rajout e devant toutes 3 DEUXI ME D MARCHE 24 les options dans le fichier printer Type dat et nous laissons un champ vide pour la commande dans le fichier commandType dat def
51. ssi bilit de coder une application r elle qui sera nous l esp rons utile dans le futur et en particulier le Professeur A Schiper et M Wiesmann Un grand merci M Wiesmann pour nous avoir aider structurer notre travail et pour les connaissances nouvelles qu il nous a apport es BIBLIOGRAPHIE 26 Bibliographie e La Mailing List du projet PPR et en particulier David Chappell http ppr trincoll edu e La Mailing List du Projet CUPS http www cups org e Le site http www linuxprinting org e JavaTM 2 Platform Standard Edition v 1 3 1 API Specification http lamscours java epfl ch 2001 docs java docs api index html A CODE JAVA 27 A Code java A 1 Spooler java package ch epfl lse impression import java util import java io import java text Classe principale qui lance le programme contient la mthode main public class Spooler static PrinterList printerList new PrinterList static Job job new Job static OptionsGroup optionsGroup new OptionsGroup static Printer printer new Printer static PageCount pageCount new PageCount job static GuiFrame f Fichier printerList dat static final String printerListDat printerList dat Fichier commandType dat static final String commandDat command Fichier preferences dat static final String preferences preferences dat Fichier lpPath dat static final String lpPath 1pPath dat
52. t dans le fichier printer_type dat il faut supprimer l option enlever Puis dans le 3 DEUXI ME D MARCHE 23 fichier commandprinter_type dat il faut supprimer la ligne correspondant cette option En ce qui concerne l interface graphique si l option supprimer tait repr sent e par un bouton alors le bouton sera d sactiv et si l option faisait partie d une liste alors l option sera juste enlev e de la liste Ajouter une option Pour ajouter une option d impresion une imprimante deux cas se pr sentent e L option ajouter est d j repr sent e dans l interface graphique par un bouton ou doit juste tre ajout e une liste Dans ce cas des modifications dans le fichiers de configurations suff isent en effet il suffit de rajouter dans le fichier printer_type dat l option d sir e en suivant la syntaxe de ce fichier chapitre 3 2 2 si Poption fait partie d une liste d j existante dans l interface graphique il faut rajouter cette option dans la ligne repr sentant cette liste Il faut galement rajouter l option et sa commande dans le fichier com mandprinter_type dat selon la syntaxe de ce fichier chapitre 3 2 2 e L option ajouter n est pas pr sente dans l interface graphique ni sous forme de bouton ni sous forme de liste Dans ce cas il faut faire les m mes op rations que dans le cas pr c dent Mais il faut faire en plus des modification dan
53. teur de commentaire peut tre activ Il g n rera entre autres des messages indiquant la fin de impression l tat de la file 2 PREMI RE D MARCHE 8 d attente ainsi que des messages d erreurs arr t rejet ou annulation de l impression 5 Filtres PPR est capable d utiliser des filtres pour convertir des fichiers au for mat PostScript Les programmes support s sont notamment Troff TeX DVIPS NetPBM Acrobat Reader 2 1 4 Besoins Pour installer le gestionnaire d imprimante PPR on a besoin des programmes suivants e Gunzip e Tar e Gcc version 2 5 8 ou plus recente Digital Unix 4 0 e GNU dbm GDBM 1 5 ou 1 7 2 1 5 Installation Lors de l installation il faut lancer la commande Configure A ce mo ment le programme s installe dans les r pertoires etc ppr usr lib ppr usr share ppr et var spool ppr Lorsque l on lance la commande fixup des utilisateurs ppr et pprwww et le groupe ppr Des liens symbol ique sont galement cr s vers ppr ppop ppad et ppdoc dans le r pertoire usr bin Un script initial pour PPR est galement install dans le r pertoire etc profile d si il existe et configure Inetd ou Xinetd pour lancer le serveur web de mangement de PPR et le d mon Ipr Dans cette configuration le d mon Ipr de PPR va interf rer avec le d mon d j existant Pour rem dier ce probl me il faudrait installer PPR dans des r pertoires diff rents que ceux p
54. w Color white GuiFrame Job job this job job options new Options job Toolkit tk Toolkit getDefaultToolkit Dimension d tk getScreenSize pageCount new PageCount job Initialisation de la fentre setLocation d width 20 d height 20 Layout manager pour la fentre BorderLayout BorderLayout bl new BorderLayout setLayout b1 partie nord panelNorth new Panel panelNorth setBackground w FlowLayout flNorth new FlowLayout FlowLayout LEFT panelNorth setLayout f1North add panelNorth North logoCanvas new LogoCanvas logoCanvas setSize 120 34 labelNorthi new Label LSE labelNorth2 new Label Printer manager labelNorth1 setFont f1 labelNorth2 setFont f1 panelNorth add logoCanvas panelNorth add labelNorth1 panelNorth add labelNorth2 partie ouest panelWest new Panel A CODE JAVA 51 GridLayout glWest new GridLayout 2 0 panelWest setLayout glWest add panelWest West labelWest new Label Printers labelWest setFont f3 Panel panelWest2 new Panel FlowLayout flWest2 new FlowLayout panelWest2 setLayout flWest2 int listPrintersSize printerList printerNameList size listPrinters new List listPrintersSize 1 for int i 0 i lt printerList printerNameList size i listPrinters add String printerList printerNameList get i panelWest add labelWest panelWest2 add listPrinters pan
55. xEconomy if job noBanner amp amp getCommand spooler checkboxNoBanner null buf add getCommand spooler checkboxNoBanner for int i 0 i lt buf size i job buildLine String buf get i job print job job lp buf clear Cherche la commande pour l option choosePrinter et rajoute l imprimante la ligne de commande param printerName Le nom de l imprimante return La commande pour choosePrinter String choosePrinter String printerName A CODE JAVA 43 if getCommand spooler choosePrinter null Y String command getCommand spooler choosePrinter line command printerName return line Cherche la commande pour multipleCopies et lui ajoute les bons paramtres return La commande pour multipleCopies String multipleCopies if job numberCopies null amp amp cl equals job numberCopies 1 false String command getCommand spooler multipleCopies if command null nbCopies command job numberCopies return nbCopies Cherche la commande pour printFromTo et lui ajoute les bons paramtres return la commande pour printFromTo String printFromTo if job printFrom null amp amp job printTo null String command getCommand spooler printFromTo if command null printFromTo command job printFrom job printTo return printFromTo A CODE JAVA A4 A CODE
56. ype dat checkbox0dd Odd even dans le fichier type dat checkboxEven Even multiples copies dans le fichier type dat multipleCopies MultipleCopies from to dans le fichier type dat printFromTo From_to nom du groupe economy dans le fichier type dat static final String checkboxEconomy Economy nom du groupe no banner dans le fichier type dat static final String checkboxNoBanner No_banner nom du groupe page range dans le fichier type dat static final String pageRange Page_ranges public Spooler Mthode main qui lance l interface graphique charge la liste des imprimantes Le mthode peut prendre plusieurs arguments en ligne de commande qui corresp aux fichiers imprimer public static void main String arguments int i 0 i lt arguments length i job filename add arguments i for int i 0 i lt job filename size i job files String job filename get 0 A CODE JAVA 29 for int i 1 i lt job filename size i job files job files job filename get i printerList loadPrinterList printerList getPrinterByName Collator cl Collator getInstance job job pageCount loadlpPath if c1 equals pageCount getlpPath pageCount loadlpPath false System out println Warning lpPath dat may not contain the correct path for lp System out println which response for lp is p
Download Pdf Manuals
Related Search
Related Contents
to view the user manual for the product in pdf Kenmore 24'' Built-In Dishwasher - Stainless Steel ENERGY STAR Installation Guide Diseño Asistido por Computador Aplicación de Modelado Francisco FRONTIER® Series Self-Contained Breathing Apparatus User`s OSER ATEX 2 De'Longhi Upright Vacuum Cleaner User's Manual "user manual" Copyright © All rights reserved.
Failed to retrieve file