我正在开发一个项目,用于根据用户输入创建 pdf 发票。
输入放入一个数组:array ('input1' => 'value1', 'input2' => 'value2')
我让我的PHP解析数组并计算TCPDF所需的高度/宽度,以便能够在正确的位置打印带边框的所有内容。
现在,如果用户input1和input2不同,一切正常,但如果它们完全相同(这是可能的话) TCPDF 只打印第二个输入。
这是我的代码:
public function PrintInvoiceContent() {
// settings
$rowcount = 0;
$borderL = 'L';
$borderR = 'R';
$firstBorder = true;
$firstInfo = true;
$lastBorder = true;
$dimensions = $this->getPageDimensions();
foreach ($this->input['invoice_content'] as $key => $value) {
// key contains text, value contains actual amount in dollar
// measurements
$lines = ($this->getNumLines($key, 130) * 5);
$rowcount = $rowcount + $lines;
$startY = $this->GetY();
$height = ceil($startY + $rowcount + $dimensions['bm']);
if (floor($dimensions['hk']) - $height < 1) {
$borderL = 'LB';
$borderR = 'RB';
$firstBorder = true;
$lastBorder = false;
} else if (floor($dimensions['hk']) - $height == 1) {
$borderL = 'LB';
$borderR = 'RB';
$firstBorder = true;
$lastBorder = true;
}
if ($firstBorder) {
$this->Cell(0, 5, '', 'LTR', 1);
if ($firstInfo) {
$this->Cell(14, ($this->getNumLines($this->input['betreft'], 153) * 5), 'About: ', 'L', 0, 'L', false);
$this->MultiCell(156, ($this->getNumLines($this->input['betreft'], 153) * 5), $this->input['About'], 'R', 'L', false);
// prints discription of bill contents
$this->Cell(0, 5, '', 'LR', 1, 'L', false);
$firstInfo = false;
}
$this->MultiCell(130, $lines, $key, $borderL, 'L', false, 0);
$this->Cell(40, $lines, $value, $borderR, 1, 'L', false);
$firstBorder = false;
} else {
$this->MultiCell(130, $lines, $key, $borderL, 'L', false, 0);
$this->Cell(40, $lines, $value, $borderR, 1, 'L', false);
}
$this->Cell(0, 2, '', 'LR', 1);
}
}
如果用户输入变化多达1个字符,一切正常。 有没有人知道为什么如果输入的部分完全相同,第一个输入会被省略?