2016-11-22 7 views
0

FPDFを使用してPDFに生成される動的なPHPテーブルがあります。FPDFを使用してテーブル内の1つの列の幅を変更します

「名前」の列を他の列よりも広くするにはどうすればよいですか?

class PDF extends FPDF { 
    function Header() { 
     $this->Image('quote-header.png'); 
     $this->Ln(2); 
    } 

    function Footer() { 
     $this->Image('quote-footer.png'); 
    } 

    function LoadData($file) { 
     $lines = file($file); 
     $data = array(); 
     foreach($lines as $line) 
     $data[] = explode(';', trim($line)); 
     return $data; 
    } 

    function BasicTable($header, $data) { 
     foreach($header as $col) 
     $this->Cell(40, 7, $col, 1); 
     $this->Ln(); 
     foreach($data as $row) { 
      foreach($row as $col) 
      $this->Cell(40, 6, $col, 1); 
      $this->Ln(); 
     } 
    } 
} 

$header = array('Product Reference', 'Name', '('. $pound_sign .') Price (excl. VAT)', 'Unit'); 

私はこのテーブルを生成する唯一のコードであると確信していますか?

どのようなヘルプも素晴らしいでしょう。これは、私が働く会社の製品見積もりシステムのためであり、この列幅の問題を修正せずにさらに進歩することはできません。

この表は、製品リファレンス、名前、価格およびユニットの4つの列で構成されています。名前列が他のものよりも広くなるようにするか、可能であれば製品名に(自動的に調整する)必要があります。

答えて

0

Cellメソッドの最初のパラメータはwidthです。 http://www.fpdf.org/en/doc/cell.htm

サイズを2倍にしてみてください。

function BasicTable($header, $data) { 
    $nameIndex = array_search ('Name' , $header);  

    foreach($header as $key => $col) { 
     $width = ($key == $nameIndex) ? 80 : 40; 
     $this->Cell($width, 7, $col, 1);    
    } 

    $this->Ln(); 

    // This assumes that $row is an int indexed array 
    // E.G looks like array(0 => 'some Product Reference ', 1 => 'Some Name' , 2 =>'Some Price', 3 => 'Some Unit')   
    foreach($data as $row) { 
     foreach($row as $key => $col) { 
      $width = ($key == $nameIndex) ? 80 : 40; 
      $this->Cell($width, 6, $col, 1); 
     } 
     $this->Ln(); 
    } 

} 
+0

これは機能しません、私のテーブルはどこにでも行きますか? –

+0

@Dan更新されたコードを参照してください。 – bassxzero

+0

十分にありがとうございます。テーブルの幅がページの余白を超えないように制限する方法はありますか?左マージンを右マージンと同じにすることは素晴らしいことです。 –

関連する問題