je cherche un bout de code qui génère des code barres en format image.
merci pour les renseignement
je cherche un bout de code qui génère des code barres en format image.
merci pour les renseignement
Il y a ça sur sourceforge :
http://sourceforge.net/projects/jbarcodebean
c'est pas mal : ça porduit des codes sous différents formats (39, 128...)
mais je veux le créer dans mon code java et non avec un logiciel
Tu peux utiliser JBarcodeBean dans ton code, ce n'est pas un programme, c'est un "JavaBeans component".
Voici un exemple de code, tiré du site http://jbarcodebean.sourceforge.net/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import jbarcodebean.*; public class ServletTest extends HttpServlet { JBarcodeBean bb; public void init(ServletConfig conf) throws ServletException { super.init(conf); bb = new JBarcodeBean(); bb.setCodeType(new ExtendedCode39()); bb.setShowText(true); } public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("image/gif"); OutputStream out = resp.getOutputStream(); bb.setCode(req.getParameter("code")); bb.gifEncode(out); } }
K
la méthode gifEncode() n'a pas l'air d'etre définie . J'ai pourtant télécharger le .jar du site officiel.
Comment faire?
Bonsoir, j'aimerais pouvoir utiliser cette classe pour générer un code à barre.
En JSP.
J'ai trouvé ce code sur developpez mais la fonction gifEncoder n'existe pas apparement.
Et ensuite en Java Swing pour pouvoir l'imprimer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import jbarcodebean.*; import net.sourceforge.jbarcodebean.model.ExtendedCode39; public class ServletTest extends HttpServlet { JBarcodeBean bb; public void init(ServletConfig conf) throws ServletException { super.init(conf); bb = new JBarcodeBean(); bb.setCodeType(new ExtendedCode39()); bb.setShowText(true); } public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("image/gif"); OutputStream out = resp.getOutputStream(); bb.setCode(req.getParameter("code")); bb.gifEncode(out); } }
Merci.
Essaie de prendre la bonne habitude de regarder la documentation plutôt que des code existant qui peuvent dater. La classe jbarcodebean.JBarcodeBean est deprecated . Il faut utiliser net.sourceforge.jbarcodebean.JBarcodeBean
Je ne vois pas cette méthode dans la doc, mais la méthode draw() semble convenir pour génerer une image. Dans l'exemple que tu donnes on doit pouvoir utiliser à la place:
Quand a utiliser en Swing c'est tout aussi simple, il suffit de faire afficher le BufferedImage dans un JLabel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 BufferedImage bi = bb.draw(null); ImageIO.write(bi,"GIF",out);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 BufferedImage bi = bb.draw(null); JLabel codeBarre = new JLabel(new ImageIcon(bi));
En effet , merci beaucoup.
Pour la méthode draw de JBarCodeBean , pourquoi mettre un null en paramètre?
Je la comprends pas vraiment , elle demande un BufferedImage en paramètre pour en ressortir un autre.
Dans mon script j'ai un null pointer exception.
J'ai créé un deuxième Buffered Image et ça marche mieux !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 import java.awt.image.BufferedImage; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import javax.imageio.ImageIO; import net.sourceforge.jbarcodebean.JBarcodeBean; import net.sourceforge.jbarcodebean.model.Code128; import net.sourceforge.jbarcodebean.model.ExtendedCode39; public class ServletTest extends HttpServlet { JBarcodeBean bb; public static final int LABEL_BOTTOM = 0; public void init(ServletConfig conf) throws ServletException { super.init(conf); bb = new JBarcodeBean(); bb.setCodeType(new Code128()); bb.setLabelPosition(LABEL_BOTTOM); } public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("image/gif"); OutputStream out = resp.getOutputStream(); bb.setCode("76200"); BufferedImage bi = bb.draw(null); ImageIO.write(bi,"GIF",out); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 import java.awt.image.BufferedImage; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import javax.imageio.ImageIO; import net.sourceforge.jbarcodebean.JBarcodeBean; import net.sourceforge.jbarcodebean.model.Code128; import net.sourceforge.jbarcodebean.model.ExtendedCode39; public class ServletTest extends HttpServlet { JBarcodeBean bb; public static final int LABEL_BOTTOM = 0; public void init(ServletConfig conf) throws ServletException { super.init(conf); bb = new JBarcodeBean(); bb.setCodeType(new Code128()); bb.setLabelPosition(LABEL_BOTTOM); } public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("image/gif"); OutputStream out = resp.getOutputStream(); bb.setCode("76200"); int width = 100; int height = 100; // Create buffered image that does not support transparency BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); BufferedImage bi = bb.draw(bimage); ImageIO.write(bi,"GIF",out); } }
Maintenant pour Swing , en fait c'est pas à l'affichage que ça m'interesse d'afficher ce code à barre mais c'est à l'impression.
La problématique est un peu différente.
Voici le code pour afficher le code à barre (merci de l'aide!)
Maintenant beaucoup plus compliqué , je dois l'envoyer à l'impression .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172 /* Definitive Guide to Swing for Java 2, Second Edition By John Zukowski ISBN: 1-893115-78-X Publisher: APress */ import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.image.BufferedImage; import javax.swing.ImageIcon; import javax.swing.InputVerifier; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import javax.swing.text.JTextComponent; import net.sourceforge.jbarcodebean.JBarcodeBean; import net.sourceforge.jbarcodebean.JBarcodeBean.*; import net.sourceforge.jbarcodebean.model.Code128; import net.sourceforge.jbarcodebean.model.ExtendedCode39; public class Find { public static void main(String args[]) { String title = (args.length == 0 ? "TextField Listener Example" : args[0]); JFrame frame = new JFrame(title); Container content = frame.getContentPane(); JBarcodeBean bb = new JBarcodeBean(); bb.setCodeType(new Code128()); bb.setLabelPosition(0); bb.setCode("76200"); int width = 100; int height = 100; // Create buffered image that does not support transparency BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); BufferedImage bi = bb.draw(bimage); JPanel namePanel = new JPanel(new BorderLayout()); JLabel nameLabel = new JLabel(new ImageIcon(bi)); nameLabel.setDisplayedMnemonic(KeyEvent.VK_N); JTextField nameTextField = new JTextField(); nameLabel.setLabelFor(nameTextField); namePanel.add(nameLabel, BorderLayout.WEST); namePanel.add(nameTextField, BorderLayout.CENTER); content.add(namePanel, BorderLayout.NORTH); JPanel cityPanel = new JPanel(new BorderLayout()); JLabel cityLabel = new JLabel("City: "); cityLabel.setDisplayedMnemonic(KeyEvent.VK_C); JTextField cityTextField = new JTextField(); cityLabel.setLabelFor(cityTextField); cityPanel.add(cityLabel, BorderLayout.WEST); cityPanel.add(cityTextField, BorderLayout.CENTER); content.add(cityPanel, BorderLayout.SOUTH); ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { System.out .println("Command: " + actionEvent.getActionCommand()); } }; nameTextField.setActionCommand("Yo"); nameTextField.addActionListener(actionListener); cityTextField.addActionListener(actionListener); KeyListener keyListener = new KeyListener() { public void keyPressed(KeyEvent keyEvent) { printIt("Pressed", keyEvent); } public void keyReleased(KeyEvent keyEvent) { printIt("Released", keyEvent); } public void keyTyped(KeyEvent keyEvent) { printIt("Typed", keyEvent); } private void printIt(String title, KeyEvent keyEvent) { int keyCode = keyEvent.getKeyCode(); String keyText = KeyEvent.getKeyText(keyCode); System.out.println(title + " : " + keyText + " / " + keyEvent.getKeyChar()); } }; nameTextField.addKeyListener(keyListener); cityTextField.addKeyListener(keyListener); InputVerifier verifier = new InputVerifier() { public boolean verify(JComponent input) { final JTextComponent source = (JTextComponent) input; String text = source.getText(); if ((text.length() != 0) && !(text.equals("Exit"))) { Runnable runnable = new Runnable() { public void run() { JOptionPane.showMessageDialog(source, "Can't leave.", "Error Dialog", JOptionPane.ERROR_MESSAGE); } }; SwingUtilities.invokeLater(runnable); return false; } else { return true; } } }; nameTextField.setInputVerifier(verifier); cityTextField.setInputVerifier(verifier); DocumentListener documentListener = new DocumentListener() { public void changedUpdate(DocumentEvent documentEvent) { printIt(documentEvent); } public void insertUpdate(DocumentEvent documentEvent) { printIt(documentEvent); } public void removeUpdate(DocumentEvent documentEvent) { printIt(documentEvent); } private void printIt(DocumentEvent documentEvent) { DocumentEvent.EventType type = documentEvent.getType(); String typeString = null; if (type.equals(DocumentEvent.EventType.CHANGE)) { typeString = "Change"; } else if (type.equals(DocumentEvent.EventType.INSERT)) { typeString = "Insert"; } else if (type.equals(DocumentEvent.EventType.REMOVE)) { typeString = "Remove"; } System.out.print("Type : " + typeString + " / "); Document source = documentEvent.getDocument(); int length = source.getLength(); try { System.out .println("Contents: " + source.getText(0, length)); } catch (BadLocationException badLocationException) { System.out.println("Contents: Unknown"); } } }; nameTextField.getDocument().addDocumentListener(documentListener); cityTextField.getDocument().addDocumentListener(documentListener); frame.setSize(250, 150); frame.setVisible(true); } }
Comment récupérer un objet Image de la classe JBarcodeBean ?
merci.
BareCodeComponent.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 package com.fft.tribune.tools; import javax.swing.*; import javax.imageio.*; import java.io.*; import java.awt.*; import java.awt.print.*; import java.awt.image.*; import net.sourceforge.jbarcodebean.JBarcodeBean; /** * * @author Bogdan Helwin */ public class BarecodeComponent extends JBarcodeBean { Image _img = null; /** Creates a new instance of BarecodeComponent */ public BarecodeComponent() { super(); } public Image getImage() { try { PipedOutputStream out = new PipedOutputStream(); PipedInputStream in = new PipedInputStream(out); //gifEncode(out); _img = ImageIO.read(in); } catch (IOException e) { _img = null; } return _img; } }
code à appeler
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 BarecodeComponent bc = new BarecodeComponent(); /* * TODO: add switch for codebare type */ bc.setCodeType(new Code128()); //bc.setShowText(true); bc.setCode(_barre); int barreHeigth = (int)(coef * _barreHeigth); bc.setBarcodeHeight(barreHeigth); // Create buffered image that does not support transparency BufferedImage bimage = new BufferedImage(100, barreHeigth , BufferedImage.TYPE_INT_RGB); BufferedImage bi = bc.draw(bimage); Image img = (Image)bi; int bareWidth = img.getWidth(null); int barreX = (int)((width - bareWidth) / 2); log.debug("barre img width = " + img.getWidth(null)); log.debug(" img heigth = " + img.getHeight(null)); log.debug(" bareWidth = " + bareWidth ) ; log.debug(" barreHeigth = " + barreHeigth ) ; g2d.drawImage(img, barreX, (int)barreY - barreHeigth, //barreX + barreWidth, (int)barreY + barreHeigth, null);
Bonjour j'ai essayé d'utiliser JBarCodeBean avec votre exemple mais j'ai un souci au niveau de l'execution de la servlet sur tomcat 7.
Voici une des erreurs que la console me rapporte
Merci d'avance pour vos réponses
Caused by: java.lang.NoClassDefFoundError: net/sourceforge/jbarcodebean/model/BarcodeStrategy
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Unknown Source)
at java.lang.Class.getDeclaredFields(Unknown Source)
at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:87)
at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:261)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:140)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:67)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:405)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
No Class Def Found Error (5 mots anglais facile à comprendre non ? ) + ce qui à causé l'erreur : net/sourceforge/jbarcodebean/model/BarcodeStrategy
Code : Sélectionner tout - Visualiser dans une fenêtre à part Caused by: java.lang.NoClassDefFoundError: net/sourceforge/jbarcodebean/model/BarcodeStrategy
Je préfère te laisser chercher et revenir poser une question si tu ne trouves toujours pas que te dire pourquoi, la compréhension des erreurs est d'une grande importance dans ce domaine.
Edit : Def = definition ;-)
J'ai très bien compris l'anglais du message d'erreur, c'est justement ça qui ne va pas. Je ne sais pas comment résoudre alors que je vois que cette classe est bien définie dans la bibliothèque...
Edit : importer jbarcode dans le dossier lib de tomcat
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager