2

TCPDF を使用して、宛名ラベル用の Avery テンプレートに適合するクリーンで機能的な 3 列のレイアウトを作成することに成功しましたが、問題が 1 つだけあり、以下で私が抱えている唯一の問題について説明します。

これらのラベルはシートごとに 30 個あり、USPS Intelligent Mail バーコードも追加できるようになりました (これは、TCPDF に組み込まれた機能であり、例 27 で示されています)。

ここに私の問題があります: 各ページの最後のレコード (レコード 30) のバーコードは、次のページに挿入することを主張しています。

バーコードの問題の説明

目立たせるために、このバーコードを黄色で強調表示しました。バーコードは単純に X と Y 座標で配置されていますが、この最後のレコード (30) では配置が関係ないようです。レコード 30 で Y が設定されている値は、次のページに保持されます。負の値を入力して前のページに押し戻そうとしましたが、これを行うと消えます。

このバーコードを正しい位置に配置するにはどうすればよいですか?


ここに私が持っているものがあります:

バーコード以外のすべてが 1 つのフィールドとして一緒に書き込まれます (バーコードをレンダリングし、それらをアドレスと一緒に書き込む方法が見つからなかったので、X & Y の配置しかできませんでした)。

完全な住所フィールド:

  • (これは、1 つに書き換えられた約 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();
}
?>

バーコード フィールド:

  • バーコードを実行するために、「郵便番号」フィールドに追加しました。これは、TCPDF がバーコード計算のハイフンの後にそれを要求するためです。注: 「str_replace」関数を使用して、郵便番号のハイフンを削除する必要がありました。XとYで適切に配置するために、レコードごとにこれを行いました.
  • ページに相対
  • 何でも高さ(それを見せるためだけに)
  • 出力前の PHP コード: http://pastebin.com/AGyY2M1i

私はこれらのバーコードに取り組んできましたが、この小さな問題を理解できません。

アップデート

これは、これらのフィールドが配置された方法です...

TCPDF フィールドの順序

しかし、それらを切り替えただけで、問題は解決しやすくなりました。

現在問題のある唯一のレコードは LAST レコードのようです。運が悪かったので、ここで少し検索しましたが、最後のレコードをターゲットにする方法はありますか?

問題が発生している理由は、すべての「elseif」ステートメントの後の「else」ステートメントが原因です。ただし、その「else」ステートメントを取り除いて、残りのような「elseif」ステートメントに変えると、elseif ($r == 30) のようになります。各ページの 30 番目のバーコードが消えます (最後のレコードのバーコードも消えます)。 .

最後のレコードをターゲットにできるようにする必要があると思いますか?

4

0 に答える 0