PHP RTF Lite. После определенного количества циклов ячейки таблицы все больше увеличивают высоту

Я испытываю странное поведение при записи текста в ячейках таблицы файла RTF с использованием PHPRtfLite учебный класс. Данные извлекаются из XML, но странное поведение может быть воспроизведено с помощью простого массива.

Я заметил, что после определенного числа циклов высота (заполнение снизу) ячеек увеличивается. Если я добавлю ЕДИНОЕ значение в массив (таким образом, цикл увеличивается на единицу), заполнение будет увеличиваться, скажем, X, если я добавлю ДВА значения, заполнение увеличит X * 2 и т. Д. Это происходит только из определенного цикла. Не с первой петли.

Загрузите класс и попробуйте следующее:

  1. Во-первых, попробуйте код как есть (ячейки будут иметь нижний отступ)
  2. Во-вторых, удалите ЕДИНОЕ значение из массива и повторите попытку (нижний отступ равен нулю)
  3. В-третьих, добавьте в массив значения ДВА ИЛИ РЕЖИМА (заполнение ячейки будет увеличиваться пропорционально).

Другая странность в том, что нижняя граница ячейки не может быть установлена ​​самим Word.. Загрузите RTF с Word и попробуйте исправить это. Нижняя граница не может быть перемещена к вершине. Он застрял, пустые строки не добавлены, а высота ячейки не установлена.

    <?php

error_reporting(E_ALL & ~E_NOTICE);

require_once('PHPRtf/lib/PHPRtfLite.php');


$cars = array("Acura", "Alfa Romeo", "Aston Martin", "Audi", "Bentley", "BMW", "Bugatti", "Buick", "Cadillac", "Chevrolet", "Chrysler", "Citroen", "Dodge", "Ferrari", "FIAT", "Ford", "Geely", "GM", "GMC", "Honda", "Hyunday", "Infiniti", "Jaguar", "Jeep", "Kia", "Koenigsegg", "Lamborghini", "Land Rover", "Lexus", "Maserati", "Mazda", "McLaren");


PHPRtfLite::registerAutoloader();

$rtf = new PHPRtfLite();

$border = new PHPRtfLite_Border(
$rtf,
new PHPRtfLite_Border_Format(1, '#000000'), // left border
new PHPRtfLite_Border_Format(1, '#000000'), // top border
new PHPRtfLite_Border_Format(1, '#000000'), // right border
new PHPRtfLite_Border_Format(1, '#000000')  // bottom border
);


$font = new PHPRtfLite_Font(12, 'DecimaWE Rg', '#000000', '#FFFFFF');

$justify = new PHPRtfLite_ParFormat(PHPRtfLite_ParFormat::TEXT_ALIGN_JUSTIFY);

$sect = $rtf->addSection();

$table = $sect->addTable();


$row = 1;

foreach($cars as $value) {

// Add a row of height 0 at every loop
$table->addRows(1, 0);

// Set two columns of the same width
$table->addColumnsList(array(8.5, 8.5));

// Set left cell
$cell = $table->getCell($row, 1);
$cell->setCellPaddings(0.4, 0, 0.4, 0);
$cell->setFont($font);
$cell->setTextAlignment(PHPRtfLite_Table_Cell::TEXT_ALIGN_JUSTIFY);
$cell->setBorder($border);

// Set right cell
$cell = $table->getCell($row, 2);
$cell->setCellPaddings(0.4, 0, 0.4, 0);
$cell->setFont($font);
$cell->setTextAlignment(PHPRtfLite_Table_Cell::TEXT_ALIGN_JUSTIFY);
$cell->setBorder($border);

// Write in the left cell
$table->writeToCell($row, 1, $value);

// Write in the right cell
$table->writeToCell($row, 2, $value);

$row++;

}

$rtf->save('cells.rtf');
?>

0

Решение

Я работаю сам.

Линия:

$table->addColumnsList(array(8.5, 8.5));

должен быть вне петли и должен быть помещен после addTable:

$table = $sect->addTable();
$table->addColumnsList(array(8.5, 8.5));
0

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

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

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