Biblioteca PHP gratuita para crear y gestionar archivos DOCX basados en plantillas
Biblioteca PHP líder de código abierto que permite crear, leer, modificar y manipular documentos Microsoft Word (DOCX) a partir de plantillas. Añade tablas, inserta texto, imágenes y aplica formato mediante la API PHP gratuita
¿Qué es MDword?
En el mundo del desarrollo con Golang, manejar documentos Microsoft Word (.docx) ha sido históricamente un desafío. Muchas bibliotecas existentes están restringidas a la funcionalidad "solo escritura" o tienen un elevado precio comercial. Go-Docx (mantenida por fumiama) cubre esta brecha como una de las bibliotecas de código abierto más funcionales, diseñadas para leer y escribir archivos ECMA-376 Office Open XML. Es útil porque proporciona una API de alto nivel que abstrae las complejas estructuras XML subyacentes en los archivos Word.
Lo que hace que Go-Docx destaque es su conjunto integral de funcionalidades: formato de texto (color, tamaño, alineación), inserción de imágenes, manipulación de tablas, formas, lienzos y grupos. Ya sea que estés generando facturas, analizando currículos o automatizando la generación de informes, esta biblioteca maneja estructuras complejas de Office Open XML (ECMA-376) sin la sobrecarga de llamar a aplicaciones externas. Es un fork impulsado por la comunidad que ha evolucionado significativamente respecto a sus predecesores. A diferencia de alternativas comerciales como UniOffice (que requiere pago para obtener todas las funciones), Go-Docx sigue siendo completamente gratuito bajo la licencia AGPL-3.0.
Comenzando con MDword
La forma recomendada de incorporar Go-Docx a tu proyecto es usando GitHub. Por favor, utiliza el siguiente comando para una instalación sin problemas.
Instalar MDword vía Composer
composer require mkdreams/mdword ¿Cómo crear un documento Word (.docx) basado en plantillas mediante la biblioteca PHP?
git clone https://github.com/mkdreams/MDword.git
Generación de documentos Word basados en plantillas mediante PHP
Go-Docx te permite crear documentos complejos desde cero utilizando un enfoque estructurado. Gestiona la inicialización del entorno del documento, incluyendo temas y estilos predeterminados, asegurando que tus archivos generados sean totalmente compatibles con Microsoft Word y otros procesadores modernos. Aquí tienes un ejemplo sencillo que muestra cómo generar un archivo Word Docx dentro de aplicaciones Go.
¿Cómo insertar texto en un documento Word y aplicar formato mediante la biblioteca PHP?
require_once 'vendor/autoload.php';
use MDword\WordProcessor;
// Load a template
$template = new WordProcessor();
$template->load('template.docx');
// Replace placeholders
$template->setValue('{{NAME}}', 'John Doe');
$template->setValue('{{DATE}}', date('Y-m-d'));
// Save the modified document
$template->save('output.docx');
Añadir texto a Word y formatear mediante PHP
A diferencia de muchos competidores, la biblioteca de código abierto Go-Docx sobresale en la lectura de archivos existentes. Puede analizar un archivo .docx e iterar a través de sus elementos internos, como párrafos y tablas. Esto la convierte en una opción ideal para tareas de extracción de datos o auditoría de documentos donde necesitas analizar el contenido programáticamente. El siguiente ejemplo muestra cómo los desarrolladores pueden analizar documentos Word dentro de sus propias aplicaciones Go.
¿Cómo crear y gestionar tablas dentro de documentos Word DOCX mediante la biblioteca PHP?
require 'vendor/autoload.php';
use Mkdreams\MDword\MDword;
use Mkdreams\MDword\Elements\TextRun;
use Mkdreams\MDword\Elements\Paragraph;
$mdword = new MDword();
$section = $mdword->createSection(); // Sections are often containers for content
// Add a simple paragraph
$paragraph1 = new Paragraph();
$paragraph1->addText('This is a simple paragraph.');
$section->addElement($paragraph1);
// Add a paragraph with formatted text
$paragraph2 = new Paragraph();
$textRun1 = new TextRun();
$textRun1->setText('This text is ');
$paragraph2->addElement($textRun1);
$textRun2 = new TextRun();
$textRun2->setText('bold and red.');
$textRun2->setFontStyle(['bold' => true, 'color' => 'FF0000']); // Color as hex
$paragraph2->addElement($textRun2);
$section->addElement($paragraph2);
// Add text with specific font and size
$paragraph3 = new Paragraph();
$textRun3 = new TextRun();
$textRun3->setText('This is Arial, size 16.');
$textRun3->setFontStyle(['name' => 'Arial', 'size' => 16]);
$paragraph3->addElement($textRun3);
$section->addElement($paragraph3);
$mdword->save('FormattedTextDocument.docx');
echo "Formatted document created.";
Agregar y gestionar tablas en archivos Word mediante PHP
El control fino sobre la tipografía es una fortaleza clave de esta biblioteca Go de código abierto. Puedes modificar el color del texto, el tamaño de la fuente, la alineación e incluso añadir hipervínculos o tabulaciones mediante Go-Docx. Esto permite a los desarrolladores generar documentos profesionales y con marca que cumplan requisitos de diseño específicos sin intervención manual.
How to Create and Manage Tables inside Word DOCX Documents via PHP Library?
require 'vendor/autoload.php';
use Mkdreams\MDword\MDword;
use Mkdreams\MDword\Elements\Table;
use Mkdreams\MDword\Elements\Row;
use Mkdreams\MDword\Elements\Cell;
use Mkdreams\MDword\Elements\TextRun;
$mdword = new MDword();
$section = $mdword->createSection();
// Create a table
$table = new Table();
// Potentially add table-level styling, e.g., borders
// $table->setStyle(['borderSize' => 6, 'borderColor' => '000000']);
// Add a header row
$headerRow = new Row();
$cellH1 = new Cell();
$cellH1->addTextRun(new TextRun('Header 1', ['bold' => true]));
$headerRow->addCell($cellH1);
$cellH2 = new Cell();
$cellH2->addTextRun(new TextRun('Header 2', ['bold' => true]));
$headerRow->addCell($cellH2);
$table->addRow($headerRow);
// Add a data row
$dataRow1 = new Row();
$cellR1C1 = new Cell();
$cellR1C1->addTextRun(new TextRun('Data A1'));
$dataRow1->addCell($cellR1C1);
$cellR1C2 = new Cell();
$cellR1C2->addTextRun(new TextRun('Data B1'));
$dataRow1->addCell($cellR1C2);
$table->addRow($dataRow1);
$section->addElement($table);
$mdword->save('DocumentWithTable.docx');
echo "Document with table created.";