При использовании Magento PDF обрезается после первой страницы

Использование Magento с Zend_Pdf и несколько пользовательских классов, которые позволяют печатать / загружать PDF-файлы с определенными спецификациями заголовка / таблицы. Проблема в том, что он обрезается после первой страницы и не создает новую страницу, когда список элементов содержит более 20 элементов.

Этот код:

public function getOutput()
{

$this->pages[] = $this->page;

return $this->render();

}

И этот код:

$pdf = new PrintPdf();
$pdf->generate($sourceData);
$output = $pdf->getOutput();

echo $output;

Я верю, что ошибка происходит. Если я изменю «return» в первом коде на «echo», он выведет правильные данные в браузер, но когда я попытаюсь пройти через второй код, он только выдает одну страницу данных.

Буду признателен за любой совет, так как я работаю над этим около 2 недель.

ОБНОВИТЬ:

Мне сказали этот кусок кода:

private function drawLineItems($tableData)
{
$this->drawHeading($this->__('Line Items'));

// Draw table
$this->decOffset(35);
$this->colorLine(cBLUE);
$this->page->setLineWidth(0.5);
$this->page->drawLine($this->pMargin, $this->yOffset, $this->pWidth - $this->pMargin, $this->yOffset);

$this->fontSize(FONT_SMALL);
$this->colorFill(cBLUE);

$this->decOffset(15);

$sum = ($this->pMargin + 10);
for($idx = 0; $idx < sizeof($tableData['heading']); $idx++) {
$pos = $sum;
$this->page->drawText($tableData['heading'][$idx], $sum, $this->yOffset);
$sum += ($tableData['width'][$idx] + 10);
$tableData['width'][$idx] = $pos;
}

$this->decOffset(10);
$this->page->drawLine($this->pMargin, $this->yOffset, $this->pWidth - $this->pMargin, $this->yOffset);

$this->fontSize(8);
$this->colorFill(cLIGHT);
$this->colorLine(cBORDER);

foreach($tableData['rows'] as $row) {
$this->decOffset(15);

$yOffset = $this->yOffset;

for($idx = 0; $idx < sizeof($row); $idx++) {
if ($tableData['heading'][$idx] == 'Description') {
$lines = $this->_breakTextToLines($row[$idx], $tableData['width'][$idx + 1] - $tableData['width'][$idx]);
foreach ($lines as $line) {
$this->page->drawText($line, $tableData['width'][$idx], $yOffset);
$yOffset -= 10;
}
} else {
$this->page->drawText($row[$idx], $tableData['width'][$idx], $this->yOffset);
}
}
$this->decOffset($this->yOffset - $yOffset);
$this->page->drawLine($this->pMargin, $this->yOffset, $this->pWidth - $this->pMargin, $this->yOffset);
}

$this->decOffset(20);
$this->fontSize(FONT_NORMAL);
$this->colorFill(cDARK);
$this->page->drawText($this->__('Grand Total') . ': ' . $tableData['total'], $this->pWidth - 125, $this->yOffset);
}

Вероятно, проблема в том, что она не формирует новую страницу после определенного количества элементов. Моя проблема сейчас заключается в выполнении этой задачи. Помощь все равно будет оценена.

1

Решение

Я обнаружил, что добавив этот код:

if( $this->yOffset < 25){
$this->yOffset = $this->pHeight - 25;
$yOffset = $this->yOffset;
$this->pages[] = $this->page;
$this->page = $this->newPage(Zend_Pdf_Page::SIZE_A4);
$this->fontSize(8);
$this->colorFill(cLIGHT);
$this->colorLine(cBORDER);
}

после

$yOffest = $this->yOffset

в третьей части кода в вопросе исправлена ​​проблема!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]