PHPWord - установка шрифта в процессоре шаблонов - PullRequest
0 голосов
/ 06 января 2020

Я использую PHPWord для загрузки файла шаблона и создания нового файла из него.

$templateName = 'QuoteTemplate1.docx';
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($templateName);

$values = ['clientAddressName' => $quote->company_name]; // this array typically has more values
foreach ($values as $key => $value) {
    $templateProcessor->setValue($key, $value);
}

Затем я добавляю в этот шаблон настраиваемую таблицу, код выглядит так:

$table = new PhpOffice\PhpWord\Element\Table([
    'borderSize' => 0,
    'borderColor' => 'none',
    'width' => 9200,
    'unit' => PhpOffice\PhpWord\SimpleType\TblWidth::TWIP
]);
$table->addRow();
$table->addCell(150)->addText('Cell A1');
$table->addCell(150)->addText('Cell A2');
$table->addCell(150)->addText('Cell A3');
$table->addRow();
$table->addCell(150)->addText('Cell B1');
$table->addCell(150)->addText('Cell B2');
$table->addCell(150)->addText('Cell B3');
$templateProcessor->setComplexBlock('quoteItemTable', $table);

Я хочу добавить шрифты и стили абзаца к тексту в этой пользовательской таблице - вот в чем проблема.

Если я попробую что-то вроде этого:

$templateProcessor->addParagraphStyle('rightAlign', ['alignment' => 'right']);

Я получаю ошибки (addParagraphStyle не является распознанным методом $ templateProcessor). И если я попытаюсь:

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$phpWord->addParagraphStyle('rightAlign', ['alignment' => 'right']);

$table->addCell(25)->addText('Cell A1', 'fontStyle', 'rightAlign');

Тогда я не получу ошибок, но мой стиль абзаца rightAlign игнорируется. Обратите внимание, что я получаю те же результаты, когда пытаюсь выполнить шаги со стилями шрифтов и стилями абзацев.

Как я могу установить свой собственный стиль шрифта и абзаца в процессоре шаблонов?

1 Ответ

2 голосов
/ 11 февраля 2020

У меня сработало следующее:

$my_template = new \PhpOffice\PhpWord\TemplateProcessor(storage_path('template1.docx'));

$table = new \PhpOffice\PhpWord\Element\Table();

$myFontStyle = array('name' => 'Minion Pro', 'size' => 10, 'bold' => true);
$myParagraphStyle = array('align'=>'center', 'spaceBefore'=>50, 'spaceafter' => 50);

$table->addRow();
$table->addCell()->addText('Cell 1', $myFontStyle, $myParagraphStyle );
$table->addCell()->addText('Cell 2', $myFontStyle, $myParagraphStyle );
$table->addCell()->addText('Cell 3', $myFontStyle, $myParagraphStyle );
$my_template->setComplexBlock('table', $table);
...