Tengo un código de barras con un ancho de dimensiones: 162px and height: 50 px
. Cuando lo imprimo en un tamaño de papel A4, su dimensión es 40 mm X 14 mm
pero cuando lo imprimo en CR80 Cards
(tamaño de papel más pequeño) su tamaño es 25mm X 9mm
.
El código de barras en el papel A4 se escanea bien, pero los códigos de barras en las tarjetas CR80 no. Se debe a que el tamaño del código de barras se reduce para ajustarse a la página y, por lo tanto, distorsiona los códigos de barras.
Si y solo si los códigos de barras están 40mm X 19mm
en tarjetas CR80, estará bien y funcionará (supuse). Entonces, ¿cómo sabré qué dimensiones (en px), debo ordenarle a mi impresora que imprima para obtener el resultado deseado?
Una comprobación rápida sugiere que el tamaño nominal para algunos tipos (EAN-*) es "25,93 mm de alto y 37,29 mm de ancho" y "ellos" sugieren que no lo reduzca más allá del 80 % (20 x 29 mm).
No vi nada específico en el código 39, pero sospecho que su problema es simplemente que ha ido demasiado lejos en la reducción y las barras están demasiado juntas.
No menciona el software que está utilizando, pero básicamente coloca la imagen más grande en la tarjeta de identificación. He usado 3 de 9 antes y descubrí que la altura es menos importante que el ancho y el espacio entre barras: las que usé probablemente tenían aproximadamente 3/8 de pulgada de alto y 1,5 pulgadas de ancho (alrededor de 9 mm de alto x 38 mm de ancho).
Si tiene problemas para ajustarlo con otra información, colóquelo grande y recorte la parte superior. Experimento.
Una cosa más: code39 es un esquema de reemplazo directo de ASCII. Esto significa que puede utilizar una fuente . 12345abc
se vuelve *12345abc*
y simplemente lo configura usando un tipo de letra 3of9 como free 3of9 . Esto hace que el dimensionamiento sobre la marcha no sea un problema e incluso se pueden generar utilizando un informe de base de datos, etc.
<?php
// Requires a font file on your server
$fR = 0; $fG = 0; $fB = 0;
$bR = 255; $bG = 255; $bB = 255;
$text_pad = 10;
$text = array(
array('text' => '', 'size' => 19, 'left' => $text_pad, 'width' => 1, 'height' => 1, 'font_path' => ''),
);
$text[0]['font_path'] = realpath('./images/free3of9.ttf'); //give it a path relative to the calling script
$text[0]['text'] = strtoupper('*12345 bobs your uncle 6789*'); //simpe code39: ONLY 0-9 A-Z (caps) . - *
$text[0]['size'] = 60;
$text[0]['left'] = $text_pad;
$result = barcode_getdimensions($text[0]['text'], $text[0]['size'], $text[0]['font_path']);
$text[0]['width'] = $result['width'];
$text[0]['height'] = $result['height'];
//************ end configuration vars
function barcode_getdimensions ($a_string, $a_size, $a_font) {
$tmp['width'] = 0;
$tmp['height'] = 0;
if ($a_size == 0) { return $tmp;}
$result = imageftbbox($a_size, 0, $a_font, $a_string);
$tmp['width'] = $result[2] - $result[0];
$tmp['height'] = $result[1] - $result[7];
return $tmp;
}
//output the header. Any non-image output after this point will throw errors
header("Content-type: image/png");
header('Content-Disposition: inline; filename=barcode.png');
$image = imagecreatetruecolor(($text_pad * 2) + $text[0]['width'],($text_pad * 2) + $text[0]['height']);
$textcolor = imagecolorallocate($image,$fR,$fG,$fB);
$bgcolor= imagecolorallocate($image,$bR,$bG,$bB);
imagefilledrectangle($image,0,0,($text_pad * 2) + $text[0]['width'],($text_pad * 2) + $text[0]['height'],$bgcolor);
imagettftext($image, $text[0]['size'], 0, $text_pad, $text_pad + $text[0]['height'], $textcolor, $text[0]['font_path'], $text[0]['text']);
imagepng($image);
imagedestroy($image); // always destroy image
?>
Vicente
Andrés H
Yorik
Yorik
alyssaeliyah