0

我正在使用 TCPDF 创建条形码标签。该代码运行良好,直到我尝试缩放价格文本以使其更高(更明显)。现在,最下面一行标签将组件溢出到后面的页面上,包括未缩放的组件。似乎沿着标签底行的文本的纵坐标值不在页面底部,这导致了问题,但我认为在调用 MultiCell 等程序时设置 (x,y) 值绝对设置 (x ,y) 值?有谁知道如何解决这一问题?我可以强制一个大的画板吗?缩放后可以移动对象吗?我可以以某种方式从页外纵坐标计算中恢复吗?

问题出在下面的 create_label 函数中。第二个 MultiCell 行是缩放的条目。最下面一行标签的具体效果是,第一张标签上的描述和价格是正确的,但条形码被强制到第二页。第二个标签的描述和价格在第二页,但条形码被强制到第三页。等等。

function create_label($posx, $posy, $upc, $price, $desc){
    global $START_X, $START_Y, $INC_X, $INC_Y, $style, $pdf;
    $pdf->SetFont('helvetica', '', 15);
    $pdf->MultiCell(1.00, 0.575, $desc, 0, 'L', false, 1, $START_X+($posx*$INC_X), $START_Y+($posy*$INC_Y), true, 1, false, true, 0.575, 'M', true);
    $pdf->SetFont('', 'B', '24');
    $pdf->StartTransform();
    $pdf->ScaleY('200',1.00,0.7+($posy*$INC_Y)); break;
    $pdf->MultiCell(1.00, 0.575, $price, 0, 'R', false, 1, $START_X+($posx*$INC_X)+1.00, $START_Y+($posy*$INC_Y), true, 1, false, true, 0.575, 'M', true);
    $pdf->StopTransform();
    $pdf->write1DBarcode($upc, 'UPCA', $START_X+($posx*$INC_X), $START_Y+($posy*$INC_Y)+0.3125+0.2625, 2.0, .3, '', $style, 'N');
}

$pdf = new TCPDF('P', 'in', 'LETTER', true, 'UTF-8', false);
$pdf->SetMargins(0.1875, 0.5, 0.1875);
$pdf->SetHeaderMargin(0);
$pdf->SetFooterMargin(0);
$pdf->SetAutoPageBreak(TRUE, 0.5);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
  require_once(dirname(__FILE__).'/lang/eng.php');
  $pdf->setLanguageArray($l);
}
$pdf->AddPage();

$START_X = 0.85;
$START_Y = 0.38;
$INC_X = 2.375;
$INC_Y = 0.9375;

// label width = 2.25
// label height = 0.875
// Label gutter = 1/8 x 1/16

$upc_list = array( /*Array of UPC numbers*/ );
for($row = 0; $row <= 10; $row++){
    for ($col = 0; $col <= 2; $col++){
        unset($upc);
        if(strlen($upc) > 0 && strlen($upc) < 13 && is_numeric($upc)) {
            unset($item);
            $item = get_item_from_database($upc);  // Creates data array
            create_label($col, $row, $upc, $item['price'], trim($item['description']));
        }
    }
}
$pdf->Output('test_pdf.pdf', 'I');
4

0 回答 0