0

fPDFとPHPを使用してPDFテーブルを作成しようとしていますが、1ページに収まる場合はテーブルが作成されます。ただし、テーブルが1つのページに収まらない場合、最初のページは適切ですが、2番目のページと他のページではテーブルは規則的ではありません。これが私のPDF出力の例です:

https://rapidshare.com/files/486723233/results.pdf

そして、これがこのテーブルを作成するための私のコードです:

//FILL THE TABLE

            $max_number_of_lines = 0;

            for ($index = 0; $index < count($subjects); $index++,$temp=0,$row_height = 15,$max_number_of_lines = 0) {
                //Account height of row, all will be same
                //Issue a page break first if needed
                if($this->GetY()+$row_height > $this->PageBreakTrigger)
                    $this->AddPage($this->CurOrientation);

                foreach ($subjects[$index] as $fields) {
                    $myString = mb_convert_encoding($fields, "iso-8859-9", "auto");
                    $number_of_lines = ceil(($this->GetStringWidth($fields))/$fieldLengthArray[$temp]);
                    if ($row_height < ceil($number_of_lines * 15)) {
                        $row_height = ceil($number_of_lines * 15);
                        $max_number_of_lines = $number_of_lines+1;
                    }
                    $temp++;
                }
                $temp=0;
                foreach ($subjects[$index] as $myFields) {
                    //$this->SetAutoPageBreak(true,$row_height);
                    $this->SetY($currentY);
                    $this->SetX($currentX);
                    $myString = mb_convert_encoding($myFields, "iso-8859-9", "auto");
                    $number_of_lines = ceil(($this->GetStringWidth($myFields))/$fieldLengthArray[$temp]);

                    if ($number_of_lines < $max_number_of_lines-1) {
                        $this->Rect($currentX, $currentY, $fieldLengthArray[$temp], $row_height);   
                        //Draw the border
                        //$this->Rect($x, $y, $w, $h);
                        $this->MultiCell($fieldLengthArray[$temp], ceil($row_height/$max_number_of_lines) , 
                            $myString,0,  'L', $fill);

                    }
                    else {
                        //Draw the border
                        //$this->Rect($x, $y, $w, $h);
                        $this->Rect($currentX, $currentY, $fieldLengthArray[$temp], $row_height);   
                        $this->MultiCell($fieldLengthArray[$temp], ceil($row_height/$max_number_of_lines), 
                            $myString,0,  'L', $fill);

                    }
                    $currentX += $fieldLengthArray[$temp];
                    $temp++;
                    //$this->Ln();
                }
                $this->Ln($row_height);
                $this->SetY($currentY);
                $currentX = $this->GetX();
                $currentY += $row_height;

            }
            $this->SetFillColor(238);
            $this->SetLineWidth(0.2);
            $this->SetFont('arial_tr', '', 10);
            $this->Ln();
        }

これは私の関数であるGeneratetableの一部であり、$subjectsデータベースから取得する情報です。

$subjects = array(array()) 

1ページ目がレギュラーなのに2ページ目以降はレギュラーではない理由がわかりませんでした。ページの終わりもチェックします。

4

1 に答える 1

1

これは、1つのセルでページのページ分割をトリガーしているために発生しています。

fpdfで「自動ページ分割」を無効にするか、1行のセルの高さを事前に計算する必要があります。

別の方法として、私のfpdfテーブルスクリプトを確認できます:http: //interpid.eu/fpdf-table

于 2012-04-20T09:47:25.467 に答える