fpdf想要为依赖于if / else语句的数组更改SetFillColor

时间:2012-07-20 08:29:29

标签: php pdf fpdf

好的,请尽量在这里尽可能清楚。我正在尝试生成一个包含显示产品信息的各种字段的pdf文档。基本上,生成pdf的脚本将确定是否已启动产品中的更改,如果已更改,则将创建pdf。

我现在要做的是用这些更改突出显示该字段。要检查是否有变化,我使用以下变量(其中大约有三十个)

$cone
$ctwo..... etc

PDF文件中产品输出的数组示例如下:

    $leftHeadArray[0]['leftText']  = 'ID';
    $leftHeadArray[0]['rightText'] = $ID;


    $leftHeadArray[1]['leftText']  = 'start';
    $leftHeadArray[1]['rightText'] = date("d/m/Y", $Start);


    $leftHeadArray[2]['leftText']  = 'End';
    $leftHeadArray[2]['rightText'] = date("d/m/Y", $End);

然后在以下位置启动格式和单元格:

$maxheader = max(array_keys($leftHeadArray), array_keys($midHeadArray), array_keys($rightHeadArray));

    for ($i = 0; $i <= max($maxheader); $i++)
    {
        if (isset($leftHeadArray[$i]))
        {
            $pdf->SetFont('helvetica', 'B', 6);
            $pdf->SetFillColor(128, 0, 0);
            $pdf->SetTextColor(255, 255, 255);

            $pdf->Cell(40, 5, $leftHeadArray[$i]['leftText'], $border, 0, 'L', 1);

            $pdf->SetFont('helvetica', 'N', 6);
            if ($ctwentytwo == 0 && $leftHeadArray[1]['rightText'] || $ctwentytwo == 0 && $leftHeadArray[4]['rightText'] ){
            $pdf->SetFillColor(255, 255, 255);
            $pdf->SetTextColor(0, 0, 0);
            }else{
            $pdf->SetFillColor(0, 0, 0);
            $pdf->SetTextColor(255, 255, 255);
            }

        $pdf->Cell(30, 5, $leftHeadArray[$i]['rightText'], $border, 0, 'L', 1);
        $pdf->Cell(20, 5, '', 0, 0, 'L', 0);
    }

我已经尝试过的事情:

  1. 在ifidividual cell arrays周围包装if else语句

    (例如$ leftHeadArray [0] ['leftText'] ='ID';         $ leftHeadArray [0] ['rightText'] = $ ID;)

    并试图覆盖那里的设定填充颜色

  2. 将if else语句放在if isset部分

  3. 我正在努力的事情:

    • 将$ cone连接到$ leftheadarray
    • 在启动更改时仅更改一个单元格

    我希望这很简洁!

    // ------------------------------已解决

    变量总是假设为0,因此如果$ cone == 1需要进行声明,并且如下所示与左头数组相关:希望这有帮助!

    if (isset($leftHeadArray[$i]))
            {
                $pdf->SetFont('helvetica', 'B', 6);
                $pdf->SetFillColor(128, 0, 0);
                $pdf->SetTextColor(255, 255, 255);
    
                $pdf->Cell(40, 5, $leftHeadArray[$i]['leftText'], $border, 0, 'L', 1);
    
                $pdf->SetFont('helvetica', 'N', 6);
    
                $pdf->SetFillColor(255, 255, 255);
                $pdf->SetTextColor(128, 0, 0);
    
    
                if (($ctwentytwo == 1) && ($leftHeadArray[$i]['leftText'] == "Promotion Start Date")
                ||  ($cone == 1) && ($leftHeadArray[$i]['leftText'] == "Promotion ID")
                ||  ($ctwo == 1) && ($leftHeadArray[$i]['leftText'] == "Promotion Type"))#|| $ctwentytwo == 0 && $leftHeadArray[1]['rightText']
                {
                    $pdf->SetFillColor(0, 0, 0);
                    $pdf->SetTextColor(255, 255, 255);
                }
    
                $pdf->Cell(30, 5, $leftHeadArray[$i]['rightText'], $border, 0, 'L', 1);
                $pdf->Cell(20, 5, '', 0, 0, 'L', 0);
            }
    

1 个答案:

答案 0 :(得分:1)

if (isset($leftHeadArray[$i]))
        {
            $pdf->SetFont('helvetica', 'B', 6);
            $pdf->SetFillColor(128, 0, 0);
            $pdf->SetTextColor(255, 255, 255);

            $pdf->Cell(40, 5, $leftHeadArray[$i]['leftText'], $border, 0, 'L', 1);

            $pdf->SetFont('helvetica', 'N', 6);

            $pdf->SetFillColor(255, 255, 255);
            $pdf->SetTextColor(128, 0, 0);


            if (($ctwentytwo == 1) && ($leftHeadArray[$i]['leftText'] == "Promotion Start Date")
            ||  ($cone == 1) && ($leftHeadArray[$i]['leftText'] == "Promotion ID")
            ||  ($ctwo == 1) && ($leftHeadArray[$i]['leftText'] == "Promotion Type"))#|| $ctwentytwo == 0 && $leftHeadArray[1]['rightText']
            {
                $pdf->SetFillColor(0, 0, 0);
                $pdf->SetTextColor(255, 255, 255);
            }

            $pdf->Cell(30, 5, $leftHeadArray[$i]['rightText'], $border, 0, 'L', 1);
            $pdf->Cell(20, 5, '', 0, 0, 'L', 0);
        }