diff --git a/imprimir_etiquetas_termica.php b/imprimir_etiquetas_termica.php
index cd2ed669..c08a320c 100644
--- a/imprimir_etiquetas_termica.php
+++ b/imprimir_etiquetas_termica.php
@@ -66,45 +66,44 @@ if (empty($codes)) {
align-items: center;
overflow: hidden;
text-align: center;
- padding: 5mm 1mm 1mm 1mm; /* Restaurado a 5mm para bajar el contenido */
+ padding: 2mm 1mm 1mm 1mm; /* Reducido para dar más espacio vertical */
border: 0.1mm solid #eee; /* Guía visual en pantalla */
}
.producto-nombre {
font-size: 6px;
- font-weight: normal;
- line-height: 1;
- margin-bottom: 1mm;
+ line-height: 1.1;
+ margin-bottom: 1.5mm; /* Aumentado para separar del código */
text-transform: uppercase;
- white-space: nowrap;
+ display: -webkit-box;
+ -webkit-line-clamp: 1;
+ -webkit-box-orient: vertical;
overflow: hidden;
- text-overflow: ellipsis;
width: 100%;
+ word-break: break-all;
}
.barcode-container {
- height: 9mm; /* Revertido a 9mm */
+ height: 9mm;
display: flex;
justify-content: center;
align-items: center;
- margin: 1mm 0; /* Margen vertical */
- padding: 0 1mm;
+ margin: 0.8mm 0; /* Ajuste milimétrico vertical */
+ padding: 0 1mm;
box-sizing: border-box;
- width: 100%; /* Ocupa el ancho de la etiqueta para centrar */
+ width: 100%;
}
.barcode-container svg {
- height: 9mm; /* Revertido a 9mm */
+ height: 9mm;
width: auto;
display: block;
margin: 0 auto;
- shape-rendering: crispEdges;
}
.sku-text {
font-size: 7px;
- font-weight: normal;
- margin-top: 0.5mm;
+ margin-top: 1.2mm; /* Aumentado para separar del código */
letter-spacing: 0.5px;
}
@@ -152,8 +151,8 @@ if (empty($codes)) {
getBarcode($code, 1.1, 72);
+ // widthFactor 1.0 y barReduction 0.15 para separar un poco más las barras
+ echo $generator->getBarcode($code, 1.0, 72, 'black', 0.15);
?>
diff --git a/includes/barcode_generator.php b/includes/barcode_generator.php
index f7fb133a..46144c60 100644
--- a/includes/barcode_generator.php
+++ b/includes/barcode_generator.php
@@ -11,7 +11,7 @@ class BarcodeGenerator
$this->barcode_codes = $this->getCode128Map();
}
- public function getBarcode($code, $widthFactor = 1, $height = 50, $foregroundColor = 'black')
+ public function getBarcode($code, $widthFactor = 1, $height = 50, $foregroundColor = 'black', $barReduction = 0)
{
$barcodeData = $this->getBarcodeData($code);
if (!$barcodeData) return '';
@@ -22,9 +22,12 @@ class BarcodeGenerator
$barArray = str_split($barcodeData['bars']);
for ($i = 0; $i < count($barArray); $i++) {
- $width = $widthFactor * (int)$barArray[$i];
+ $val = (int)$barArray[$i];
+ $width = $widthFactor * $val;
if ($i % 2 == 0) { // Even indices are bars, odd are spaces
- $bars .= '';
+ // Apply bar reduction to increase white space between bars
+ $drawWidth = max(0.4, $width - $barReduction);
+ $bars .= '';
}
$x += $width;
}
@@ -43,12 +46,26 @@ class BarcodeGenerator
$len = strlen($code);
$indices = [];
- $indices[] = 104; // Start B
-
- for ($i = 0; $i < $len; $i++) {
- $val = $this->getCharValue('B', $code[$i]);
- if ($val !== null) {
- $indices[] = $val;
+ // Check if code is purely numeric and has even length for Code 128C
+ // Or just use Code 128B as fallback
+ if (ctype_digit($code) && $len >= 2) {
+ $indices[] = 105; // Start C
+ for ($i = 0; $i < $len; $i += 2) {
+ if ($i + 1 < $len) {
+ $indices[] = (int)substr($code, $i, 2);
+ } else {
+ // Odd number of digits, switch to B for the last one
+ $indices[] = 100; // Code B
+ $indices[] = $this->getCharValue('B', $code[$i]);
+ }
+ }
+ } else {
+ $indices[] = 104; // Start B
+ for ($i = 0; $i < $len; $i++) {
+ $val = $this->getCharValue('B', $code[$i]);
+ if ($val !== null) {
+ $indices[] = $val;
+ }
}
}
diff --git a/test_etiquetas.php b/test_etiquetas.php
index cca94260..5a293c5b 100644
--- a/test_etiquetas.php
+++ b/test_etiquetas.php
@@ -61,44 +61,43 @@ $generator = new BarcodeGenerator();
align-items: center;
overflow: hidden;
text-align: center;
- padding: 5mm 1mm 1mm 1mm; /* Restaurado a 5mm para bajar el contenido */
+ padding: 2mm 1mm 1mm 1mm; /* Reducido para dar más espacio vertical */
}
.producto-nombre {
font-size: 6px;
- font-weight: normal;
- line-height: 1;
- margin-bottom: 1mm;
+ line-height: 1.1;
+ margin-bottom: 1.5mm; /* Aumentado para separar del código */
text-transform: uppercase;
- white-space: nowrap;
+ display: -webkit-box;
+ -webkit-line-clamp: 1;
+ -webkit-box-orient: vertical;
overflow: hidden;
- text-overflow: ellipsis;
width: 100%;
+ word-break: break-all;
}
.barcode-container {
- height: 9mm; /* Revertido a 9mm */
+ height: 9mm;
display: flex;
justify-content: center;
align-items: center;
- margin: 1mm 0;
+ margin: 0.8mm 0; /* Ajuste milimétrico vertical */
padding: 0 1mm;
box-sizing: border-box;
width: 100%;
}
.barcode-container svg {
- height: 9mm; /* Revertido a 9mm */
+ height: 9mm;
width: auto;
display: block;
margin: 0 auto;
- shape-rendering: crispEdges;
}
.sku-text {
font-size: 7px;
- font-weight: normal;
- margin-top: 0.5mm;
+ margin-top: 1.2mm; /* Aumentado para separar del código */
letter-spacing: 0.5px;
}
@@ -132,32 +131,48 @@ $generator = new BarcodeGenerator();
+
OPCIÓN 1: ACTUAL
+
' . $generator->getBarcode($sku, 1.0, 72, 'black', 0.15) . '
+
' . $sku . '
+
';
+ }
+
+ // Fila 2: Reforzada (Líneas más gruesas)
+ foreach ($skus as $sku) {
+ echo '
+
OPCIÓN 2: REFORZADA
+
' . $generator->getBarcode($sku, 1.1, 72, 'black', 0.05) . '
+
' . $sku . '
+
';
+ }
+
+ // Fila 3: Contraste Alto (Líneas más finas)
+ foreach ($skus as $sku) {
+ echo '
+
OPCIÓN 3: FINAS
+
' . $generator->getBarcode($sku, 1.0, 72, 'black', 0.25) . '
+
' . $sku . '
+
';
+ }
?>
-
-
PRODUCTO
-
- getBarcode($sku, 1.1, 72);
- ?>
-
-
-
-
-
-
✅ Ajustes de Escaneo y Compatibilidad:
+
+
🔬 Prueba de Grosor de Líneas:
- - Fuente: Cambiada a Verdana (más legible en impresoras térmicas).
- - Texto: Grosor mantenido en "normal" para evitar empaste.
- - Barras más negras: Aplicado
crispEdges para máxima nitidez.
- - Ancho de Barra: Factor 1.1 (ligeramente más gruesas para mayor contraste).
- - Altura: 9mm.
+ - Opción 1 (Actual): El equilibrio que veníamos usando.
+ - Opción 2 (Reforzada): Las líneas negras son más anchas. Útil si tu impresora imprime muy "pálido".
+ - Opción 3 (Finas): Las líneas negras son más delgadas, dejando más espacio blanco. Útil si la tinta térmica se "chorrea" o expande mucho.
+
¿Cuál de las 3 filas escanea más rápido con tu lector?