Ben bir sütun bir sonraki sayfaya yayılan bu yüzden büyük olabilir, bir iki sütun düzeni, alarak bu sorunu içine koştu. Ben birbirlerinin üstüne hizalanmış böylece, geri ilk sütun olarak aynı Y pozisyonuna Y konumunu ayarlamak, aynı zamanda iki sütun büyük altında belgeyi devam etmek istedi.
Benim çözüm Sayfa Numarası ($pdf->PageNo()
) ve Y pozisyon içeren belgenin "Dikey Pozisyonu", kayıt oldu ($pdf->GetY()
).
İki farklı dikey konumları saklamak gerekir. İlk olarak, ikinci sütunu başlayacak nerede "başlangıç noktası" saklayın. İkinci olarak, belgenin aşağı uzak olan "Büyük nokta" saklayın. Yalnız sayfa numarası veya Y değeri bakamıyorum çünkü büyük nokta zor oldu, hem de bakmak gerekir.
Bana yardım için bu üç yöntem yarattı.
This solution does not include X-position in the example. strong>
public function GetVerticalPosition() {
// Include page and Y position of the document
return array(
'page' => $this->PageNo(),
'y' => $this->GetY(),
);
}
public function SetVerticalPosition( $pos ) {
// Set the page and Y position of the document
$this->page = $pos['page'];
$this->SetY( $pos['y'] );
}
public function FurthestVerticalPosition( $aPos, $bPos = null ) {
if ( $bPos === null ) $bPos = $this->GetVerticalPosition();
// Returns the "furthest" vertical position between two points, based on page and Y position
if (
($aPos['page'] > $bPos['page']) // Furthest position is located on another page
||
($aPos['page'] == $bPos['page'] && $aPos['y'] > $bPos['y'] ) // Furthest position is within the same page, but further down
) {
return $aPos;
}else{
return $bPos;
}
}
Kullanımı oldukça basittir. Eğer değişken yükseklik sütunları çizmek önce başlangıç pozisyonunu kapmak ve maksimum pozisyonu toplamaya başlamak gerekir.
$startPos = $this->GetVerticalPosition();
$furthestPos = $this->GetVerticalPosition();
Her hücre işleme sonra, aynı düzeyde başka bir hücreyi oluşturmadan önce, sonra tekrar başlangıç pozisyonuna ayarlanmış uzak konumu (gerekirse), güncelleştirmek istiyorum.
// Returns the furthest of the two possibilites
$furthestPos = $this->FurthestVerticalPosition( $this->GetVerticalPosition(), $furthestPos );
$this->SetVerticalPosition( $startPos );
Eğer sütunları render bitirdiğinizde, şimdiye kadar kaydedilmiş olan maksimum mesafe belgeyi ayarlayın.
$this->SetVerticalPosition( $furthestPos );
Şimdi sütunlar düzgün hizalanmış ve belge gösterici hemen uzak çizilmiş sütun sonra yer almaktadır.