# bx:barcode

<!-- last_modified: 03. Jan 2017 -->
Mit dem Tag `barcode` können verschiedene 1D und 2D-Codes erzeugt werden (Beispiele siehe unten). Ein Check auf Fehler ist mit bx:if möglich. Die Größe ist frei wählbar. Das erzeugte Format ist PNG (ggf. mit Transparenz)

## Allgemeine Syntax

```xml
<bx:barcode.qr width="250" height="250" [type="path"] [rotate="90"]> Inhalt </bx:barcode.qr>
```

### Parameter für alle Typen
| <div style="width:20px"/>  | |
| --- | --- |
| width und height | Geben die Größe des Barcodes an.<br>Ein weißer Rand ist teilweise automatisch enthalten und kann bei manchen Typen auch beeinflusst werden. |
| type | **image**: (Standard) es wird ein img-Tag erzeugt, Parameter wie style oder class im Barcode-Tag werden in das img-Tag übernommen.<br>**path**: es wird nur der Pfad zum Bild ab "/" zurückgegeben (ohne Host, falls Haupthost-Haken im Projekt nicht gesetzt wurde).<br>**url**: es wird eine komplette URL zum Bild zurückgegeben (aufgerufener Host oder Projekt-Haupthost). |
| rotate | Positive Werte drehen das erzeugte Bild im Uhrzeigersinn, negative Werte entgegen (in Grad, z.B. 90).<br>Die Größe des erzeugten Bildes wird neu berechnet, um den rotierten Barcode unterzubringen (Hintergrund ggf. transparent). |
<p class="callout info">Es ist generell empfehlenswert einen minimalen Kontrast-Rand (z.B. in weiß) zu setzen, damit Barcodeleser den Code einfacher identifizieren können.</p>
<p class="callout warning">Es kann weitere Einschränkungen, je nach offizieller Spezifikation des jeweiligen Barcode-Types, geben, die hier nicht extra aufgeführt sind.Die Ausgabegröße des Barcode-Bilds musst nicht exakt der angegebenen `width` / `height` entsprechen (liegt aber zumindest nicht darüber). Falls eine pixelgenaue Ausgabe benötigt wird, sollte ein Container um das Bild gepackt werden.</p>

## Typ-spezifische Informationen

<p class="callout warning">Die gezeigten Beispiele müssen nicht unbedingt den Anforderungen des jeweiligen Standards entsprechen! Es können also auch potentiell invalide Barcodes entstehen. Es ist die Spezifikation des jeweiligen Types zu Rate zu ziehen!</p>

### 1-Dimensionale Codes

Bei allen 1-dimensionalen Codes kann der parameter `margin` verwendet werden. Dieser legt die Größe des Randes links und rechts fest (**0** für keinen Rand, Standard ist **10**).

| <div style="width:160px">Typ</div> | <div style="width:80px">Ausgabe</div> | Einschränkungen |
| --- | --- | --- |
| `<bx:barcode.codabar>` | ![image2015-11-27 9:48:1.png](https://batix.help/uploads/images/gallery/2026-05/QlPgQM5EY46jxlaV-4489272.png)"12345" | Beginnt und endet mit einem Guard-Zeichen aus: `ABCD`.<br>ODER beginnt und endet mit einem Guard-Zeichen aus: `TN*E`.<br>Falls keine Guards gesetzt sind, wird automatisch `A` genommen.<br>Enthält nur Zeichen aus: `0123456789-$:/.+` |
| `<bx:barcode.code_39>` | ![image2015-11-27 9:54:42.png](https://batix.help/uploads/images/gallery/2026-05/tOD5diIW1fLoND0T-4489273.png)"BATIX" | maximal 80 Zeichen aus: `0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%` |
| `<bx:barcode.code_93>` | ![image2015-11-27 10:23:18.png](https://batix.help/uploads/images/gallery/2026-05/zqdigFiEkq0v3Ku2-4489275.png)"BATIX" | maximal 80 Zeichen aus: `0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%abcd*` |
| `<bx:barcode.code_128>` | ![image2015-11-27 10:26:21.png](https://batix.help/uploads/images/gallery/2026-05/h8CjNIoELsLSy8oO-4489276.png)"BATIX" | maximal 80 Zeichen |
| `<bx:barcode.itf>`<br>(Interleaved Two of Five) | ![image2015-11-27 10:32:32.png](https://batix.help/uploads/images/gallery/2026-05/Yb2zNC2UlqGUevUZ-4489277.png)"123456" | Weniger als 80 Ziffern, gerade Anzahl<br>Am besten 6, 10, 12, 14, 16, 24, oder 44 Ziffern |
| `<bx:barcode.ean_8>` | ![image2015-11-27 10:34:44.png](https://batix.help/uploads/images/gallery/2026-05/ZVUVVtwS7yYN8S3E-4489278.png)"12345678" | genau 8 Ziffern |
| `<bx:barcode.ean_13>` | ![image2015-11-27 10:36:37.png](https://batix.help/uploads/images/gallery/2026-05/pzJv9xE58PHgBrjV-4489279.png)"1234567891118" | genau 13 Ziffern<br>Prüfziffer muss stimmen |
| `<bx:barcode.upc_a>` | ![image2015-11-27 10:40:2.png](https://batix.help/uploads/images/gallery/2026-05/LKtxVH050pZs6Mao-4489280.png)"12345678910" | genau 11 Ziffern (ohne Prüfziffer, wird automatisch berechnet)<br>ODER genau 12 Ziffern (mit Prüfziffer) |
| `<bx:barcode.upc_e>` | ![image2015-11-27 10:43:3.png](https://batix.help/uploads/images/gallery/2026-05/ZQxQQ0Wz6hNW2qzo-4489281.png)"12345678" | genau 8 Ziffern |

### 2-Dimensionale Codes

#### `<bx:barcode.qr>`

##### Ausgabe
![image2015-11-27 9:45:35.png](https://batix.help/uploads/images/gallery/2026-05/ZJcf8qk6LorCFXGf-4489271.png)  
`"http://batix.de"`

##### Parameter
**ecl**  
gibt das ErrorCorrectionLevel an:
- L ~7% (Standard)
- M ~15%
- Q ~25%
- H ~30%

##### Einschränkungen
Die Länge des verschlüsselten Strings kann die Ausgabe beeinflussen.

<br>

#### `<bx:barcode.datamatrix>`

##### Ausgabe
![image2015-11-27 11:45:10.png](https://batix.help/uploads/images/gallery/2026-05/QVh00k4kd8qLMulu-4489285.png) ![image2015-11-27 11:50:45.png](https://batix.help/uploads/images/gallery/2026-05/PUCbwx0sd3PtUz1F-4489290.png) "http:/batix.de" (rechts mit shape=square)  
![image2015-11-27 11:47:0.png](https://batix.help/uploads/images/gallery/2026-05/bUFZXcsRbUoGPo29-4489288.png) ![image2015-11-27 11:50:0.png](https://batix.help/uploads/images/gallery/2026-05/THgNdwGgz68ZiOtg-4489289.png) "Lorem ipsum dolor sit amet" (rechts mit shape=rectangle)

##### Parameter
**shape**
- `none` (Standard, wird automatisch je nach Inhalt gewählt)
- `square` (Quadrat erzwingen)
- `rectangle` (Rechteck erzwingen)

<br>

#### `<bx:barcode.aztec>`

##### Ausgabe
![image2015-11-27 12:35:47.png](https://batix.help/uploads/images/gallery/2026-05/EpyeaC8oDO3Y42WG-4489292.png)  
`"http://batix.de"`

##### Parameter
**ecl**  
gibt das ErrorCorrectionLevel an (in %, (0 - 100)), 25 sollte Minimum sein.

**layers**  
gibt die Anzahl der Aztec-Layer an
- 0 (Standard): Minimum benutzen
- -1, -2, -3, -4: kompakter Modus
- 1 - 32: selbst angeben (nicht-kompakter Modus)

**charset**  
gibt den Zeichensatz an, der zur Codierung des Inhaltes verwendet werden soll.  
Standard ist utf-8.

<br>

#### `<bx:barcode.pdf_417>`

##### Ausgabe
![image2015-11-27 12:50:36.png](https://batix.help/uploads/images/gallery/2026-05/jfz6zgcoucWqKnE8-4489293.png)  
`"BATIX"`

##### Parameter

**margin**  
legt die Größe des Randes rundherum fest

**ecl**  
gibt das ErrorCorrectionLevel an.  
0 - 8, Standard ist 2.

**charset**  
gibt den Zeichensatz an, der zur Codierung des Inhaltes verwendet werden soll.  
Standard ist utf-8.

**compact**  
kompakten Modus benutzen? true oder false.  
Standard ist false.

**compaction**  
welcher Verdichtungsmodus benutzt werden soll.
- auto (Standard)
- text
- byte
- numeric

**dimensions**  
- minimale und maximale Spalten- (Cols) und Zeilenanzahl (Rows)
- kommagetrennte Zahlen
- Reihenfolge: minCols,maxCols,minRows,maxRows
- Standard: 2,30,2,30


## Fehlerabfrage

```xml
<bx:if><bx:barcode.ean_8>1234</bx:barcode.ean_8><bx:if.else>Es konnte leider kein Barcode erzeugt werden!</bx:if.else></bx:if>
```
Da bx:barcode im Fehlerfall nichts ausgibt, kann ein alternativer Text mittels [bx:if](/books/cms-handbuch-entwickler/page/bxif) ausgegeben werden.

### Beispiele

```xml
<bx:barcode.qr>Hallo</bx:barcode.qr>
 
<bx:barcode.datamatrix shape="rectangle">Hallo</bx:barcode.datamatrix>
```