Librería PHPWord

347 views
Skip to first unread message

raiker alarcon

unread,
Aug 4, 2022, 10:44:15 AM8/4/22
to Comunidad ScriptCase Latino
Buenos Días: 

Comparto esta manera el cual pude trabajar la librería para salir de un apuro, si existe manera de mejorarla se lo agradeceria, pero así fue como pude solucionar un tema que es muy escaso en scriptcase.

Realice lo siguiente:
1.- Me guie de este video que tiene dos modalidades de la librería, puede ser creando el documento a través del código php, o manipulando una planilla guardada en el servidor.

Como se me hace más fácil, modificar la plantilla utilice lo siguiente en una aplicación blank:
require_once dirname(FILE).’/PHPWord/Autoloader.php’;
\PhpOffice\PhpWord\Autoloader::register();

//use PhpOffice\PhpWord\TemplateProcessor;

$templateWord = new PhpOffice\PhpWord\TemplateProcessor(’/Applications/Scriptcase/v9-php73/wwwroot/scriptcase/file/doc/plantilla.docx’);

$nombre = “Sandra S.L.”;
$direccion = “Presidente 8787878”;
$municipio = “Mrd”;
$provincia = “Bdj”;
$cp = “02541”;
$telefono = “24536784”;

// — Asignamos valores a la plantilla
$templateWord->setValue(‘nombre_empresa’,$nombre);
$templateWord->setValue(‘direccion_empresa’,$direccion);
$templateWord->setValue(‘municipio_empresa’,$municipio);
$templateWord->setValue(‘provincia_empresa’,$provincia);
$templateWord->setValue(‘cp_empresa’,$cp);
$templateWord->setValue(‘telefono_empresa’,$telefono);

// — Guardamos el documento
$templateWord->saveAs(‘Documento02.docx’);

header(“Content-Disposition: attachment; filename=Documento02.docx; charset=iso-8859-1”);
echo file_get_contents(‘Documento02.docx’);

De esta manera modifico mi archivo Word con la información que yo quiera agregar como lo muestra el video 2.
Ahora si necesitas crear desde cero un documento Word, como lo muestra en el video 1, utilice el siguiente código como una funtion:
require_once dirname(FILE).’/PHPWord/Autoloader.php’;
\PhpOffice\PhpWord\Autoloader::register();
//require_once dirname(FILE).’/PHPWord-MT/bootstrap.php’;
//\PhpOffice\PhpWord\bootstrap::register();

$documento = new \PhpOffice\PhpWord\PhpWord();

$seccion = $documento->addSection();

// Texto sin formato
$seccion->addText(
htmlspecialchars(

'MIRA LO QUE HICE TODO CON LA LIBERIA PHPWORD'

)
);
$seccion->addText(
htmlspecialchars(
‘Segundo texto con formato’
),
array(‘name’ => ‘Arial’, ‘size’ => ‘12’, ‘bold’ => ‘true’)
);

// Texto con fuente personalizada
$fuente_propia = ‘mifuente’;
$documento->addFontStyle($fuente_propia,
array(‘name’ => ‘Arial’, ‘size’ => ‘14’, ‘bold’ => ‘true’, ‘color’ => ‘5882FA’)
);

$seccion->addText(
htmlspecialchars(
‘Tercer texto con formato’
),
$fuente_propia
);

// Tabla personalizada
$estilo_tabla = array(
‘borderColor’ => ‘F2F2F2’,
‘borderSize’ => ‘5’,
‘cellMargin’ => ‘20’,
‘bgColor’ => ‘088A68’,
);

$primera_fila = array(‘bgColor’ => ‘F2F2F2’);
$documento->addTableStyle(‘mitabla’,$estilo_tabla, $primera_fila);
$tabla = $seccion->addTable(‘mitabla’);
for ($row = 1; $row <= 8; $row++) {
$tabla->addRow();
for ($cell = 1; $cell <= 3; $cell++) {
if($row ==1)
$tabla->addCell(200)->addText(htmlspecialchars(‘primera’));
else
$tabla->addCell(200)->addText(htmlspecialchars(‘celda’));
}
}
// Imagen
$seccion->addImage(
‘/Applications/Scriptcase/v9-php73/wwwroot/scriptcase/file/img/LogoTierras.jpg’,
array(
‘width’ => 600,
‘height’ => 400,
‘wrappingStyle’ => ‘behind’
)
);
//Guardando documento
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($documento, ‘Word2007’);
$objWriter->save(“Documento01.docx”);

header(“Content-Disposition: attachment; filename = Documento01.docx”);
echo file_get_contents(“Documento01.docx”);

Utilice la librería guardándola en la aplicación como tal, ósea copie la carpeta de la Liberia en la aplicación ejemplo: scriptcase/v9-php73/wwwroot/scriptcase/app/proyecto/aplicac_black. Y de esta manera pude utilizar la librería phpword en scriptcase.

Adjunto link de la librería que tuve que modificar para poder trabajar en scriptcase, https://mega.nz/file/TsIyAZIY#6Nxd9kvq9d5RUHU3jvy1hD3f7r0sUy4vfgmQopzf0A8

Espero le funcione. saludos.

Endys Labarca

unread,
Jul 3, 2023, 11:14:40 AM7/3/23
to Comunidad ScriptCase Latino
Hola,

Puedes colocar en vez de buscar el FILE y perderte de esta manera

sc_include_library("prj", "PHPWord", "PHPWord/PHPWord.php", true, true );
sc_include_library("prj", "PHPWord", "PHPWord/Autoloader.php", true, true );

y listo
Reply all
Reply to author
Forward
0 new messages