Я пытаюсь создать аккуратный документ Word, используя Библиотека PhpWord. К сожалению, документация кажется неполной. Я хотел бы иметь абзацы с рамкой и цветом фона, охватывающие всю ширину страницы. Я провел некоторое исследование и нашел атрибуты borderSize и borderColor, которые не документированы для метода addText. Также есть атрибут bgColor, который можно установить для текста. В следующем примере создается абзац, окруженный рамкой. Текст также имеет некоторый цвет фона, но это просто текст, а не вся область, окруженная границей. К сожалению, атрибут bgColor не влияет на уровень абзаца.
У кого-нибудь есть идеи как этого добиться?
use \PhpOffice\PhpWord\IOFactory;
$document = new \PhpOffice\PhpWord\PhpWord();
$titlepage = $document->createSection();
$titlepage->addText('My Title',
array("size" => 24, "color" => "FF0000", "bgColor"=>"00FF00"),
array("borderSize"=>6, "borderColor"=>"0000FF")
);
$objWriter = IOFactory::createWriter($document, 'Word2007');
Я только что узнал, посмотрев на исходный код:
Если вы хотите установить цвет фона абзаца, вам нужно будет установить затенение стиля абзаца:
$section->addText('Your text', array(), array('shading' => array('fill' => 'dddddd')));
Цвет фона для стиля абзаца устанавливается как заливка заливки.
Насколько я могу судить, вы должны прочитать API PhpWord
http://phpoffice.github.io/PHPWord/docs/master/classes/PhpOffice.PhpWord.Style.Shading.html
и / или спецификация docx
http://officeopenxml.com/WPshading.php
найти правильные параметры для «затенения».
Других решений пока нет …