4

現在、whmcs 請求書 pdf をカスタマイズしようとしています。彼らはこの次のコードを持っています

    # Payment Status
$endpage = $pdf->GetPage();
$pdf->setPage($startpage);
$pdf->SetXY(85,$addressypos);
if ($status=="Cancelled") {
    $statustext = $_LANG["invoicescancelled"];
    $pdf->SetTextColor(245,245,245);
} elseif ($status=="Unpaid") {
    $statustext = $_LANG["invoicesunpaid"];
    $pdf->SetTextColor(204,0,0);
} elseif ($status=="Paid") {
    $statustext = $_LANG["invoicespaid"];
    $pdf->SetTextColor(153,204,0);
} elseif ($status=="Refunded") {
    $statustext = $_LANG["invoicesrefunded"];
    $pdf->SetTextColor(34,68,136);
} elseif ($status=="Collections") {
    $statustext = $_LANG["invoicescollections"];
    $pdf->SetTextColor(255,204,0);
}
$pdf->SetFont('freesans','B',12);
$pdf->Cell(110,20,strtoupper($statustext),0,0,'C');
$pdf->setPage($endpage);

?>

このコードは、次の形式を生成します。

たとえば、paymenet が「Unpaid」の場合、コードは次の echo ステートメントを生成します

UNPAID (赤色)

だから私がやろうとしているのは、このテキスト「Status:」を「UNPAID」の前に追加したいので、たとえばエコーアウトすると、このようになります

「ステータス: 未払い」

このコードを追加することで取得できます

} elseif ($status=="Unpaid") {
        $statustext = $_LANG["statustext"];
    $statustext = $_LANG["invoicesunpaid"];
    $pdf->SetTextColor(245,245,245);

しかし、このコードのせいで

$pdf->SetTextColor(245,245,245);

ステータス:(赤)にもなります。

ステータスを取得するにはどうすればよいですか。テキストは黒で、未払いは「赤」のままです。

よろしければご指摘ください。ありがとうございました。

4

3 に答える 3

7

$pdf->SetTextColor(0,0,0); で何かを書く必要がある前に、テキストの色を設定してさまざまなテキストを実現しました。

これが私のコードの例です:(書かれている実際のテキストはこのifステートメントの外にありますが、テキストの背景を変更するため、テキストの色を表示するように変更する必要があります)

    if ($row_cnt > ($sticker_count / 2)) {
        $pdf->SetTextColor(0,0,0);
        $pdf->ImageSVG($file='images/sticker_29072013.svg', $xsi, $ysi, $w='60', $h='30', $link='', $align='', $palign='', $border, $fitonpage=false);
        $pdf->ImageSVG($file='images/qr_29072013.svg', $xqi, $yqi, $w='30', $h='30', $link='', $align='', $palign='', $border, $fitonpage=false);
    }
    else {
        $pdf->SetTextColor(255,255,255);
        $pdf->ImageSVG($file='images/blacksticker_29072013.svg', $xsi, $ysi, $w='60', $h='30', $link='', $align='', $palign='', $border, $fitonpage=false);
        $pdf->ImageSVG($file='images/blackqr_29072013.svg', $xqi, $yqi, $w='30', $h='30', $link='', $align='', $palign='', $border, $fitonpage=false);
    }
于 2013-08-01T07:59:06.597 に答える
2

$pdf->Cellソースは次の$pdf->writeHTMLCellようになります。

} elseif ($status=="Unpaid") {
    $statustext = $_LANG["statustext"];
    $statustext .= "<font color=red>".$_LANG["invoicesunpaid"]."</font>";
...
$pdf->writeHTMLCell(110, 20, '', '', $statustext , 1, 1, 1, true, 'J', true);

そして、ここにその機能のドキュメントがあります。それが役に立てば幸い。

于 2012-05-11T05:32:15.270 に答える
0

2 つのオプションがあります。

1) 両方の単語を別々の Cellsに出力します。つまり、最初に "Status:"、次に "UNPAID" を出力します。このような:

$endpage = $pdf->GetPage();
$pdf->setPage($startpage);
$pdf->SetXY(85,$addressypos);
$pdf->SetFont('freesans','B',12);

// First output "Status:" in black color.
$pdf->setTextColor( array(0,0,0) );
$pdf->Cell(110,20,'Status:',0,0,'L'); // Not centered anymore!

// Now run your existing condition to get the status text/color:
if ($status=="Cancelled") {
    $statustext = $_LANG["invoicescancelled"];
    $pdf->SetTextColor(245,245,245);
} elseif ($status=="Unpaid") {
    $statustext = $_LANG["invoicesunpaid"];
    $pdf->SetTextColor(204,0,0);
} elseif ($status=="Paid") {
    $statustext = $_LANG["invoicespaid"];
    $pdf->SetTextColor(153,204,0);
} elseif ($status=="Refunded") {
    $statustext = $_LANG["invoicesrefunded"];
    $pdf->SetTextColor(34,68,136);
} elseif ($status=="Collections") {
    $statustext = $_LANG["invoicescollections"];
    $pdf->SetTextColor(255,204,0);
}

// Output the status text at X = 125 (1.5cm further to the right!)
// Note that the word "Status" above used X = 110. 
$pdf->Cell(125,20,strtoupper($statustext),0,0,'L'); // Not centered anymore!
$pdf->setPage($endpage); 

2) HTML マークアップと writeHTMLCell() を使用してテキストを出力します。

$endpage = $pdf->GetPage();
$pdf->setPage($startpage);
$pdf->SetXY(85,$addressypos);
$pdf->SetFont('freesans','B',12);

// Now run your existing condition to get the status text/color:
if ($status=="Cancelled") {
    $statustext = $_LANG["invoicescancelled"];
    $color = 'rgb(245,245,245)';
} elseif ($status=="Unpaid") {
    $statustext = $_LANG["invoicesunpaid"];
    $color = 'rgb(204,0,0)';
} elseif ($status=="Paid") {
    $statustext = $_LANG["invoicespaid"];
    $color = 'rgb(153,204,0)';
} elseif ($status=="Refunded") {
    $statustext = $_LANG["invoicesrefunded"];
    $color = 'rgb(34,68,136)';
} elseif ($status=="Collections") {
    $statustext = $_LANG["invoicescollections"];
    $color = 'rgb(255,204,0)';
}

// Now build an HTML string for the status:
$html = '<font color="black">Status:</font> '.
    '<font style="color:$color">$statustext</font>';

// Output the HTML code
$pdf->writeHTMLCell(110,20,0,0,$html); 
$pdf->setPage($endpage); 
于 2016-08-27T12:58:57.993 に答える