代码的哪一部分必须在foreach循环中

时间:2012-01-31 18:25:34

标签: php class barcode

条形码生成器的php代码(从这里取http://www.barcodephp.com/en/userguide)看起来就是这样。

我无法弄清楚哪个部分必须在foreach循环中从数组生成多个条形码? $code->parse('1'); // Text此行获得1个值 - 在这种情况下为1,并生成条形码。我需要为数字数组的所有元素生成条形码

// Including all required classes
require_once('incl/class/BCGFontFile.php');
require_once('incl/class/BCGColor.php');
require_once('incl/class/BCGDrawing.php');

// Including the barcode technology
require_once('incl/class/BCGcode39.barcode.php');

// Loading Font
$font = new BCGFontFile('./incl/class/font/Arial.ttf', 18);

// The arguments are R, G, B for color.
$color_black = new BCGColor(0, 0, 0);
$color_white = new BCGColor(255, 255, 255);

$drawException = null;
try {
    $code = new BCGcode39();
    $code->setScale(2); // Resolution
    $code->setThickness(30); // Thickness
    $code->setForegroundColor($color_black); // Color of bars
    $code->setBackgroundColor($color_white); // Color of spaces
    $code->setFont($font); // Font (or 0)
    $code->parse('1'); // Text
} catch(Exception $exception) {
    $drawException = $exception;
}

/* Here is the list of the arguments
1 - Filename (empty : display on screen)
2 - Background color */
$drawing = new BCGDrawing('', $color_white);
if($drawException) {
    $drawing->drawException($drawException);
} else {
    $drawing->setBarcode($code);
    $drawing->draw();
}

// Header that says it is an image (remove it if you save the barcode to a file)
header('Content-Type: image/png');

// Draw (or save) the image into PNG format.
$drawing->finish(BCGDrawing::IMG_FORMAT_PNG);

2 个答案:

答案 0 :(得分:1)

虽然我之前从未使用过该库,但您似乎只需要执行以下操作:

foreach ($barcodes as $barcode) {
    $code->parse($barcode);
    $drawing->setBarcode($code);
    $drawing->draw();
}

其中$条形码是一个包含条形码编号的数组,而foreach位于当前$drawing->draw();部分的位置

答案 1 :(得分:0)

嗯,你当然可以只提取一个部分来放入一个循环,但我不推荐它,因为如果其他东西根据输入崩溃,那么你将无法恢复或知道发生了什么。

我建议您将$ code写入数组。因此,为每个人创建一个新的BCGcode39。

与BCGDrawing相同,它是一个绘图表面。除非您更改它们的位置,否则不能对所有条形码使用相同的绘图表面。

您可能想要生成多个文件?为此,您需要更改BCGDrawing的第一个参数。

所以基本上

foreach($barcodes as $basicString) {
    $drawException = null;
    ...
    $code->parse($basicString);
    ...
    $drawing = new BCGDrawing($basicString . '.png', $color_white);
    ...
    $drawing->draw();
    ...
    // NO header()
    $drawing->finish(BCGDrawing::IMG_FORMAT_PNG);
}