Tak už jsem nějak zvítězil, je to fungující řešení, které sedí přímo na mou fakturu, ale snad by mohlo pomoci (popřípadě po malých úpravách) i některým ostatním s tímto problémem. Ve skriptu PDF.php ve funkci ProdTab($delivery = false) jsem doplnil vynucené odstránkování. Uvádím konec skriptu uvedené funkce:
.......
.......
if ($delivery)
$this->SetX(25);
// odstranění problémů při faktuře na více stránek, kdy se tiskla druhá polovina řádku s produktem v polovině stránky
if ($this->GetY()>265)
{
$this->AddPage();
$this->SetY(30);
}
$before = $this->GetY();
$this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_reference'].' - '.$product['product_name']), 'B');
$lineSize = $this->GetY() - $before;
$this->SetXY($this->GetX() + $w[0] + ($delivery ? 15 : 0), $this->GetY() - $lineSize);
if (!$delivery)
$this->Cell($w[++$i], $lineSize, self::convertSign(Tools::displayPrice($unit_without_tax, self::$currency, true, false)), 'B', 0, 'R');
$this->Cell($w[++$i], $lineSize, $productQuantity, 'B', 0, 'C');
if (!$delivery)
{
if($platceDPH){
$this->Cell($w[++$i], $lineSize, self::convertSign(Tools::displayPrice($total_without_tax, self::$currency, true, false)), 'B', 0, 'R');
}
$this->Cell($w[++$i], $lineSize, self::convertSign(Tools::displayPrice($total_with_tax, self::$currency, true, false)), 'B', 0, 'R');
}
$this->Ln();
}
if (!sizeof(self::$order->getDiscounts()) AND !$delivery)
$this->Cell(array_sum($w), 0, '');
}