Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Cozza
    Registrato dal
    Jan 2001
    Messaggi
    467

    font per codice a barre

    ciao,
    qualcuno ha un font che ti trasforma il testo in un barcode.
    Io non riesco a trovarlo

    grazie a tutti ciao ciao
    Ho mille libri sotto il letto non leggo più
    ho mille sogni in un cassetto non lo apro più
    parlo da solo e mi confondo e penso
    che in fondo sì sto bene così

  2. #2
    prova questo

    ciao
    in un aiuola di rose anche un cardo fa la sua bella figura

  3. #3
    Dipende da che tipo di barcode vuoi produrre.
    Per alcuni basta un font, come dici tu, per altri come il diffusissimo EAN13 (quello delle cassiere al supermercato) non sono riproducibili facilmente perché lo stesso carattere corrisponde a barre diverse a seconda della sua posizione all'interno del codice.

    Se ti serve io mi sono scritto un'applet mia per stampigliare gli EAN13 partendo da una stringa.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2000
    Messaggi
    8
    Se puoi, servirebbe anche a me!
    Grazie

  5. #5
    codice:
    package barcode;
    
    import java.awt.*;
    
    public class Ean extends java.applet.Applet {
    
      // codifiche binarie delle cifre decimali
      String[][] barcode = {
        {"0001101", "0011001", "0010011", "0111101", "0100011", 
         "0110001", "0101111", "0111011", "0110111", "0001011"}, // left hand A
        {"0100111", "0110011", "0011011", "0100001", "0011101", 
         "0111001", "0000101", "0010001", "0001001", "0010111"}, // left hand B
        {"1110010", "1100110", "1101100", "1000010", "1011100", 
         "1001110", "1010000", "1000100", "1001000", "1110100"}, // right hand
        {"101", "01010"}                                         // guide (laterale-centrale)
      };
      
      // masking del primo byte del flag sui 4 vettori barcode: 
      // 0=left hand a - 1=left hand b - 2=right hand - 3=barra guida
      int[][] maskMatrix = {
        {3,0,0,0,0,0,0,3,2,2,2,2,2,2,3}, //0
        {3,0,0,1,0,1,1,3,2,2,2,2,2,2,3}, //1
        {3,0,0,1,1,0,1,3,2,2,2,2,2,2,3}, //2
        {3,0,0,1,1,1,0,3,2,2,2,2,2,2,3}, //3
        {3,0,1,0,0,1,1,3,2,2,2,2,2,2,3}, //4
        {3,0,1,1,0,0,1,3,2,2,2,2,2,2,3}, //5
        {3,0,1,1,1,0,0,3,2,2,2,2,2,2,3}, //6
        {3,0,1,0,1,0,1,3,2,2,2,2,2,2,3}, //7
        {3,0,1,0,1,1,0,3,2,2,2,2,2,2,3}, //8
        {3,0,1,1,0,1,0,3,2,2,2,2,2,2,3}, //9
        {3,0,0,0,0,3,2,2,2,2,3} // ecco la compatibilita' ean8
      };
      
      String input;
      String output;
      String ean;
      String fgcolor;
      String bgcolor;
      int width;
      int height;
      boolean isValid = true;
      boolean hideMistakes = false;
    
      public void init() {
        input = getParameter("barcode");
        try {
          height = Integer.parseInt(getParameter("height"));
        } catch(Exception ex) {height = 40;}
        try {
          width = Integer.parseInt(getParameter("width"));
        } catch(Exception ex) {width = 100;}
    
        fgcolor = getParameter("color");
        if (fgcolor == null)
          fgcolor = getParameter("fgcolor");
        if (fgcolor == null)
          fgcolor = "#000000";
    
        bgcolor = getParameter("bgcolor");
        if (bgcolor == null)
          bgcolor = "#FFFFFF";
        if (("true".equals(getParameter("hidemistakes"))) ||
         ("true".equals(getParameter("hideMistakes"))))
          hideMistakes = true;
    
        output = input;
        createEAN();
        repaint();
      }
    
      public void paint(Graphics g) {
        g.setColor(Color.decode(bgcolor)); // background
        g.fillRect(0, 0, width, height);
    
        // le barre
        g.setColor(Color.decode(fgcolor));
        if (isValid)
          for (int i = 0, j = ean.length(); i < j; i++)
            if (ean.charAt(i) == '1')
              g.fillRect(i, 0, 1, height-12);
    
        // le cifre
        if (isValid || !hideMistakes) {
          g.setFont(new Font("Courier", Font.PLAIN, 12));
          g.drawString(output, 3, height-2);
        }
      }
    
      public void createEAN() {
        // valore di default come primo indice 
        // sulla matrice di masking nel caso di ean8
        int flagByte = 10;
        try {
          long test = Long.parseLong(input);
        } catch(NumberFormatException nfx) {
          isValid = false;
        }
        if (isValid) {
          if (input.length() == 13) {
    	     // pesco il primo byte di flag, quello indicante 
    	     // il primo indice sulla matrice di masking
    	     flagByte = Integer.parseInt((new Character(input.charAt(0))).toString());
    	     
            // ...e lo tolgo dalla stringa di input
            input = input.substring(1);
          }
    
          // inserisco le barre guida - 0=laterale - 1=centrale
          input = "0" + input.substring(0, input.length()/2) + "1" +
           input.substring(input.length()/2) + "0";
    
          ean = "";
          for (int i = 0; i < input.length(); i ++) {
    	      // primo indice: pesco il byte indicante 
    	      // che vettore interrogare per codificare la cifra corrente
    	      int i1 = maskMatrix[flagByte][i];
    
    	      // secondo indice: pesco la cifra corrente dall'input string
    	      int i2 = Integer.parseInt((new Character(input.charAt(i))).toString());
    
    	      ean += barcode[i1][i2];
          }
        }
      }
    }

  6. #6
    E' codice molto vecchio, credo sia largamente ottimizzabile in più punti, comunque funziona benone sia con gli EAN 13 che con gli EAN 8, in pratica il 90% degli usi odierni con i lettori laser.

  7. #7
    Originariamente inviato da revert
    Grazie
    Prego.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.