PHPWord - стиль таблицы по умолчанию всегда Arial 10, новый стиль не применяется - PullRequest
0 голосов
/ 28 июня 2018

Я попробовал еще один пост здесь, стили заголовка не применяются, но этот код тоже ничего не сделал. Здесь мой PHPWord строит разделы, которые отображают жестко запрограммированные переменные, используя «Open Sans» успешно; но когда я переключаюсь на отображение информации в таблице, по умолчанию всегда используется «Arial» 10. Пожалуйста, посмотрите, если вы можете помочь объяснить, почему это происходит, спасибо! Примечание. Чтобы получить выходные данные для равномерного отображения строк от ячейки к ячейке, я пытаюсь использовать другие стили в тексте. Даже когда я применяю $ BodyFontStyle к каждому addCell, addText и addRow, все равно - только Arial. Мне нужна таблица для отображения в "Open Sans" 10. Помогите, пожалуйста -

$firstRowStyle = array('name' => 'Open Sans', 'size' => 10, 'valign' => 'bottom');
$BodyFontStyle = array('name'=>'Open Sans', 'bold'=>false, 'size'=>14);
$table_cell_style = array('valign' => 'top');
$lineStyle = array('name' => 'Open Sans', 'size' => 10, 'valign' => 'bottom');

//from above, this flag is not set, or set:
if ($signatory_found == 1) { //from mySQL query looking for Signatory.

    $PHPWord->addTableStyle('BodyFontStyle', array('name'=>'Open Sans', 'bold'=>false, 'size'=>14));
    $table = $section->addTable('BodyFontStyle');

    //tried this, to no avail:
    //$PHPWord->addTableStyle($BodyFontStyle);
    //$table = $section->addTable($BodyFontStyle);

    for ($i=0; $i <= $counter; $i++) {
        $table->addRow();
        $table->addCell(1600, $firstRowStyle)->addText("BY:_____________________________________________________");
        $table->addCell(200, $firstRowStyle)->addText('');
        $table->addCell(1600, $firstRowStyle)->addText("     ____________________________");
        $table->addRow();

        $full_name_title = "    " . $signatory_results[$i]['first'] . " " . $signatory_results[$i]['last'] . ", " . $signatory_results[$i]['title'];

        $table->addCell(1600, $table_cell_style)->addText("{$full_name_title}");
        $table->addCell(200, $firstRowStyle)->addText(''); //space between name, and date.
        $table->addCell(1600, $table_cell_style)->addText("                          Date");
    }
} else { //else signatory flag was not set to 1, so no records found.

    $table = $section->addTable('BodyFontStyle');
    $PHPWord->addTableStyle('BodyFontStyle', array('name'=>'Open Sans', 'bold'=>false, 'size'=>14));

    $table->addRow();
    $table->addCell(1600, $firstRowStyle)->addText("BY:_________________________________");
    $table->addCell(200, $firstRowStyle)->addText('');
    $table->addCell(1600, $firstRowStyle)->addText("_______________________");

    $table->addRow();
    $table->addCell(1600, $firstRowStyle)->addText("          Signature");
    $table->addCell(200, $firstRowStyle)->addText('');
    $table->addCell(1600, $firstRowStyle)->addText("                Date");

    $table->addRow();
    $table->addCell(1600, $lineStyle)->addText("     ____________________________________", array(), array('cellMarginLeft' => 6));
    $table->addCell(200, $firstRowStyle)->addText('');
    $table->addCell(1600, $firstRowStyle)->addText("_______________________");

    $table->addRow();
    $table->addCell(1600, $table_cell_style)->addText("          Print Name");
    $table->addCell(200, $firstRowStyle)->addText('');
    $table->addCell(1600, $table_cell_style)->addText("                Print Title");
}

// Hack - Martin/Pitt has a / in the LP Short name which messes up the filename/path
$LPShort = str_replace("/", "-", $LPShort);
$LPShort = str_replace(" ", "-", $LPShort);

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter( $PHPWord, 'Word2007' );
$filelocation = '/var/www/company/contracts/tmp';
$filename = 'Sig_'.$LPShort."_".date('YmdHis',time()).'.docx';
$FullName = $filelocation.'/'.$filename;
//echo $FullName;
$objWriter->save($FullName);

echo $filename;
exit;

1 Ответ

0 голосов
/ 28 июня 2018

ИСПРАВЛЕНИЕ - я не буду публиковать ВСЕ код снова, но эта команда покажет решение. Ключ должен поместить определенный стиль в линию с командой addCell, в конце после текста. Обратите внимание, что выше, у меня просто был addCell с текстом, но без стиля после него. я опубликую команду до и после, чтобы объяснить:

/*BEFORE* $table->addCell(1600, $table_cell_style)->addText("{$full_name_title}");

/*AFTER*/ $table->addCell(1600, $table_cell_style)->addText("{$full_name_title}", $BodyFontStyle);
...