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:
- PHP 5.3.3+
- extensão XML Parser
- componente Zend\Escaper
- componente Zend\Stdlib
- extensão Zip (opcional, caso você queira escrever ooxml ou odf)
- extensão GD (opcional, caso você queira usar imagens)
- extensão XMLWriter (opcional, caso você queira escrever ooxml ou odf)
- extensão XSL (opcional, caso você queira aplicar XSL no seu template )
- biblioteca dompdf (opcional, caso você queira escrever em PDF. Você pode ver mais sobre essa biblioteca nesse artigo)
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!