使用PHP FPDF库创建的标签向下滑动页面

时间:2018-12-09 12:26:18

标签: php fpdf

我创建了一个FPDF PDF文档,该文档将图像放置在具有9行标签的标签纸上(下面的PHP代码)

每行标签之间没有空格/间隙,下一行标签在上一行之后立即开始。

###问题:###

打印标签时,每个标签上显示的图像从每个标签的顶部略微向下移动,从而导致标签的下一行(第9行)与第1排明显不同。

我需要在每个标签上添加其他内容,如果继续出现此问题,其中的某些内容将被删除。

我不明白为什么会这样,并且在代码中看不到任何明显的东西。这里有人可以发现我在做什么错吗?

我的代码.....     

use Fpdf\Fpdf as FPDF;

$current_x_position = 0;
$current_y_position = 0;

$total_y_per_page = 9;
$total_x_per_page = 3;

$pdf = new FPDF();
$pdf->SetMargins(0,0);
$pdf->SetAutoPageBreak(false);
$pdf->AddPage();

for($qty = 1; $qty <= 10; $qty++) {

    label($current_x_position, $current_y_position, $pdf);

    $current_y_position++;

    if($current_y_position == $total_y_per_page) {

        $current_x_position++;
        $current_y_position = 0;

        if($current_x_position == $total_x_per_page) {

            $current_x_position = 0;
            $current_y_position = 0;

            $pdf->AddPage('P');

        }

    }

}

$pdf->Output();

function label($current_x_position, $current_y_position, $pdf) {

    $left_margin = 7;
    $top_margin = 15;
    $label_width = 66;
    $label_height = 30;

    $current_x_position = $left_margin + ($label_width * $current_x_position);
    $current_y_position = $top_margin + ($label_height * $current_y_position);

    $pdf->Image('image.png', $current_x_position, $current_y_position+=1, $label_width, 10, 'png');

    return;

}

?>

1 个答案:

答案 0 :(得分:0)

我认为问题出在geoid的处理方式上。它应该与x不同。为什么?因为y需要在每打印第三个标签后重设。由于仅在打印9行后才对其进行测试并递增,因此它肯定会引起刮擦。 (也许这是一个过时的表达式,用于表示程序会导致换行,因为它已经超出了要打印的列)。建议您在每次打印标签后都需要测试x,以便在达到x时可以将其重置为0(我认为这实际上是total_x_per_page的意思)。 total_x_per_row测试必须独立于x测试;它必须在y测试之前,因为您的列将在行之前完成。

使用伪ish代码:

  • 打印标签
  • 如果行已完成,则重置x,否则增加x
  • 如果页面已完成,请重置y和x。

我在Fpdf方面的经验为零。我在(打架)标签方面的经验可以追溯到几十年前:)