Hello,
Running the following code Roboto font is applied to the text contents in the document body correctly (that uses a very similar code than the samples included in the package):
$docxFinal = new CreateDocx();
$docxFinal->importContents('ArticoloClelia.docx', ['type' => 'paragraph']);
$docxFinal->embedFont('fonts/Roboto/roboto.ttf', 'Roboto');
$docxFinal->embedFont('fonts/Roboto/robotoi.ttf', 'Roboto', ['styleEmbeding' => 'Italic']);
$docxFinal->embedFont('fonts/Roboto/robotob.ttf', 'Roboto', ['styleEmbeding' => 'Bold']);
$docxFinal->embedFont('fonts/Roboto/robotobi.ttf', 'Roboto', ['styleEmbeding' => 'BoldItalic']);
$docxFinal->setDefaultFont('Roboto');
$defaultStyle = [
'font' => 'Roboto',
];
$docxFinal->setDocumentDefaultStyles($defaultStyle);
foreach (array('paragraph', 'run', 'list', 'style') as $type) {
$docxFinal->customizeWordContent(['target' => 'document', 'type' => $type], ['font' => 'Roboto']);
}
$docxFinal->createDocx('output.docx');
We have checked the output with MS Word 2007, MS Word 2010, MS Word 2013, MS Word 2016, MS Word 2019, LibreOffice 5 and LibreOffice 6 and in all cases Roboto is applied to all existing contents in the document body content.
Also please note that your code has some errors, for example:
- 'attributes' => ['w:*'
w:* is not a valid attribute, you need to set a specific attribute name, not a wildcard, to get the correct attribute to be changed.
- [ 'type' => 'style', 'target' => 'style', 'customAttribute' => '//w:body/w:r[1=1 and descendant::w:rFonts[contains(@w:ascii, "*")]]' ]
you are trying to change the style target (style file) with the customAttribute //w:body/w:r that is a tag (not an attribute) that only exists in the document.xml file.
Also please note that your DOCX contains footnotes that aren't supported in the current version of DOCXCustomizer (https://www.phpdocx.com/api-documentation/docxcustomizer/customize-docx-Word-documents-PHP):
target string document (default), style, lastSection, header, footer.
Regards.