使用 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
我一直在研究这些条形码,但无法解决这个小问题。
更新
这就是这些字段的排列方式...
但我只是切换了它们,现在问题看起来更容易解决。
似乎现在唯一有问题的记录是 LAST 记录。我在这里搜索了一下没有运气,但是有没有办法定位最后一条记录?
它遇到麻烦的原因是因为我在所有“elseif”语句之后的“else”语句。但是,如果我把那个“else”语句拿走,把它变成一个像其他语句一样的“elseif”语句 - 例如 elseif ($r == 30) - 每页上的第 30 个条码消失(最后一条记录的条码也是如此) .
我想我需要能够定位最后一条记录?