2

使用 TCPDF,我已经成功地创建了一个干净且实用的 3 列布局,以适合用于邮寄标签的 Avery 模板,但只有一个问题,下面我将解释我遇到的唯一问题。

每张纸上有 30 个这样的标签,现在我还能够添加 USPS 智能邮件条形码(这是 TCPDF 内置的功能,在示例 27 中进行了演示)。

这是我的问题:每页上最后一条记录(第 30 条记录)的条形码坚持要在 NEXT 页上插入自身。

条码问题说明

我用黄色突出显示了这个条形码以指出它。条形码只是简单地用 X 和 Y 坐标排列,但似乎定位与最后一条记录无关(30)。Y 在记录 30 上设置的任何值都将保留在下一页上——我什至尝试输入一个负值以将其推回上一页,但只有当我这样做时它才会消失。

我怎样才能把这个条形码放在正确的位置?


这是我所拥有的:

除了条形码之外的所有内容都作为一个字段写在一起——(我找不到一种方法来呈现条形码并将它们与地址一起写,所以我只能做 X 和 Y 定位)。

完整地址字段:

  • (这是重写为一个的大约 8 个不同字段的组合)。
  • 相对于页面
  • 高度 1"

输出前的 PHP 代码:

<?php
$this->record++;
$initr=$this->record;
//set top margin
$topmargin=.75; //.75 bumping up the top margin moved the Full Address down and was how I gave the barcode room on the label

// change this number to the number of items per page
$r=($initr % 30);
if ($r==0) {

//also change this to items per page
$r=30;
}

    //column 1
    if (($r % 3) == 1) {
    $x=.25;
    $y=((floor($r/3)+1)*$h)-($h-$topmargin);
}

    //column 2
    if (($r % 3) == 2) {
    $x=3;
    $y=((floor($r/3)+1)*$h)-($h-$topmargin);
}

    //column 3
    if (($r % 3) == 0) {
    $x=5.75;
    $y=((floor($r/3)+1)*$h)-((2*$h)-$topmargin);
}
?>

输出后的 PHP 代码:

<?php
//change this to number of items per page
if ($r == 30) {
$this->AddPage();
}
?>

条码字段:

  • 为了制作条形码,我在我的“邮政编码”字段中添加了它,因为在条形码计算中的连字符之后需要它。注意:我需要使用“str_replace”函数删除任何邮政编码的连字符。所以我对每条记录都这样做,以便用 X 和 Y 正确定位它们。
  • 相对于页面
  • 任何东西的高度(只是为了让它出现)
  • 输出前的 PHP 代码:http: //pastebin.com/AGyY2M1i

我一直在研究这些条形码,但无法解决这个小问题。

更新

这就是这些字段的排列方式...

TCPDF 字段顺序

但我只是切换了它们,现在问题看起来更容易解决。

似乎现在唯一有问题的记录是 LAST 记录。我在这里搜索了一下没有运气,但是有没有办法定位最后一条记录?

它遇到麻烦的原因是因为我在所有“elseif”语句之后的“else”语句。但是,如果我把那个“else”语句拿走,把它变成一个像其他语句一样的“elseif”语句 - 例如 elseif ($r == 30) - 每页上的第 30 个条码消失(最后一条记录的条码也是如此) .

我想我需要能够定位最后一条记录?

4

0 回答 0