Back-End

9 mar, 2018

Escrevendo arquivos de texto com o PHPWord

Publicidade

Olá, pessoal!

Já falei sobre o PHPSpreedsheet que é uma biblioteca para escrever planilhas em PHP. Hoje eu mostro o PHPWord, uma biblioteca para escrever e ler arquivos .docx e outras extensões de texto.

Eu particularmente não sei quais são as probabilidades de alguém querer escrever um .docx em PHP. Talvez seja mais pelo trabalho, mesmo, além de costumar usar pdf para gerar relatórios e outros textos. Mas, se criaram essa biblioteca, é porque algumas pessoas precisaram manipular esses arquivos. Talvez algum sistema legado seu gere .doc e você precise ler. De todo modo, se você precisou manipular arquivos .doc em PHP, deixe seu comentário no final do artigo.

Bem, vamos ao que importa. Como criar e ler os arquivos usando a biblioteca?

Primeiro, precisamos de alguns pré-requisitos para utilizar a biblioteca:

Para começar, crie um diretório para o projeto, e então utilize o comando:

composer require phpoffice/phpword

Vamos criar nosso primeiro arquivo .docx com a biblioteca. Salve-o na pasta como first.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 = new PhpWord(); //instanciando um objeto PhpWord

$section = $phpWord->addSection(); //inserindo uma nova sessão no documento
$section->addText('Mussum Ipsum, cacilds vidis litro abertis. Per aumento de cachacis, eu reclamis. Admodum accumsan disputationi eu sit. Vide electram sadipscing et per. Em pé sem cair, deitado sem dormir, sentado sem cochilar e fazendo pose. Aenean aliquam molestie leo, vitae iaculis nisl.'); //inserindo um texto mussum ipsum ao documento

$objWriter = IOFactory::createWriter($phpWord, 'Word2007'); //definindo o tipo de documento a ser escrito
$objWriter->save('first.docx'); //salvando o documento no tipo escolhido

Depois, basta usar o comando:

php first.php

E aí teremos:

Também podemos inserir mais textos (parágrafos) e modificar as configurações da fonte nesses textos em específico, além de salvar o texto em outros formatos. Vamos continuar a escrever o documento em second.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 = new PhpWord(); //instanciando um objeto PhpWord

$section = $phpWord->addSection(); //inserindo uma nova sessão no documento

$section->addText('Mussum Ipsum, cacilds vidis litro abertis. Per aumento de cachacis, eu reclamis. Admodum accumsan disputationi eu sit. Vide electram sadipscing et per. Em pé sem cair, deitado sem dormir, sentado sem cochilar e fazendo pose. Aenean aliquam molestie leo, vitae iaculis nisl.'); //inserindo um texto mussum ipsum ao documento
$section->addText('Manduma pindureta quium dia nois paga. Nec orci ornare consequat. Praesent lacinia ultrices consectetur. Sed non ipsum felis. Suco de cevadiss deixa as pessoas mais interessantis. Viva Forevis aptent taciti sociosqu ad litora torquent.', array(name => 'Arial', size => 20)); //inserindo um novo bloco de texto e definindo a fonte desse bloco como Arial 20

$objWriter = IOFactory::createWriter($phpWord, 'Word2007'); //definindo o tipo de documento a ser escrito
$objWriter->save('second.docx'); //salvando o documento no tipo escolhido

$objWriter = IOFactory::createWriter($phpWord, 'HTML'); //definindo o tipo de documento como HTML
$objWriter->save('second.html'); //salvando o documento como HTML

Feito isso, basta rodar o comando:

php second.php

Teremos então, o second.docx:

E o second.html:

Espero que tenha ajudado vocês que precisavam de alguma ferramenta para escrever .docx. No próximo artigo veremos como ler e editar esses documentos. Até a próxima!