Em nosso último artigo, mostramos como criar arquivos de texto utilizando o PHPWord. No artigo de hoje vamos ler e modificar o conteúdo de arquivos de texto já existentes. Para isso, continuaremos utilizando os exemplos que foram construídos no artigo anterior.
Primeiramente vamos ler o arquivo second.docx, adicionar um novo setor e adicionar um texto nesse setor.
Salvando como reader.php
<?php require_once 'vendor/autoload.php'; //autoload das classes use PhpOffice\PhpWord\PhpWord; //usando a classe PhpWord use PhpOffice\PhpWord\IOFactory; //usando a classe IOFactory $phpWord = IOFactory::load('second.docx', 'Word2007'); //dando load ao documento previamente criado $section = $phpWord->addSection(); //criando uma nova sessão $section->addText('In elementis mé pra quem é amistosis quis leo. Diuretics paradis num copo é motivis de denguis. Suco de cevadiss, é um leite divinis, qui tem lupuliz, matis, aguis e fermentis. Nullam volutpat risus nec leo commodo, ut interdum diam laoreet. Sed non consequat odio.', array(name => 'Times New Roman', size => 26)); //inserindo um novo bloco de texto e definindo a fonte desse bloco como Times New Roman 26 $objWriter = IOFactory::createWriter($phpWord, 'Word2007'); //definindo o tipo de documento a ser escrito $objWriter->save('third.docx'); //salvando o documento no tipo escolhido
Depois basta executar o script para gerarmos o third.docx
php reader.php
Feito isso, podemos verificar que foi gerado uma nova página com o conteúdo que criamos.
Nesse caso o script criou uma nova sessão em uma nova página e incluiu o texto que inserimos. E neste caso, como faríamos para apenas continuar a escrever como se fosse um parágrafo após os textos anteriores?
O PHP Word possui um método getSections, onde ele retorna as sessões que já estão escritas e podemos continuar escrevendo na mesma sessão. Como neste caso nós tínhamos uma sessão, podemos setar a section[0] e continuar escrevendo por ali, readAndWriteInSameSection.
<?php require_once 'vendor/autoload.php'; //autoload das classes use PhpOffice\PhpWord\PhpWord; //usando a classe PhpWord use PhpOffice\PhpWord\IOFactory; //usando a classe IOFactory $phpWord = IOFactory::load('second.docx', 'Word2007'); //dando load ao documento previamente criado $sections = $phpWord->getSections(); //retorna todas as sessões $sections[0]->addText('In elementis mé pra quem é amistosis quis leo. Diuretics paradis num copo é motivis de denguis. Suco de cevadiss, é um leite divinis, qui tem lupuliz, matis, aguis e fermentis. Nullam volutpat risus nec leo commodo, ut interdum diam laoreet. Sed non consequat odio.', array(name => 'Times New Roman', size => 26)); //inserindo um novo bloco de texto e definindo a fonte desse bloco como Times New Roman 26 $objWriter = IOFactory::createWriter($phpWord, 'Word2007'); //definindo o tipo de documento a ser escrito $objWriter->save('fourth.docx'); //salvando o documento no tipo escolhido
Depois vamos rodar:
php readAndWriteInSameSection.php
Nesse caso ele gerou um parágrafo logo após o último.
Você pode customizar, alterar outros dados, adicionar sessões, links, tabelas e muito mais utilizando o PHPWord.
Para aprender ainda mais sobre essa biblioteca, leia a documentação oficial e o repositório oficial no GitHub.
Espero que tenham gostado! Até a próxima pessoal.