Blog personal

Algo que siempre he estado buscando, creo que he conseguido encontrarlo.

No es perfecto, puesto que sólo funciona en Windows, pero la conversión que hace si que es PERFECTA, ya que utiliza el software de Microsoft para hacer la convernsión de cualquier documento de Micorosoft Office a PDF.

Para hacer la conversión utiliza los productos MS instalados en un Windows y para ejecutar el software de Micrososft en background utilizamos el producto gratis de la empresa Cognidox «office_to_pdf».

Este producto se puede descargar desde:

x32: https://github.com/cognidox/OfficeToPDF/releases/download/release-1.8/OfficeToPDF.exe
x64: https://github.com/cognidox/OfficeToPDF/releases/download/release-1.8/OfficeToPDF.exe

La documentación de su ejecución y parámetos la podéis obtener en:
https://github.com/cognidox/OfficeToPDF/

Para probarlo he tomado el ejemplo de crear factura con Word o con Excel y este caso, también paso estos documentos a PDF.

Tengo el objetivo de hacer un webservice que tenga la función de conversión de cualquier documento de MS Office a PDF, de tal forma que dediquemos una «máquina Windows» a la función exclusiva de conversión de documentos a PDF.

Os dejo el aplicativo completo (PHPRunner 9.8, copia del modelo de datos y los productos de creación de documentos en Word y Excel y este conversor de Office a PDF.

Descarga: https://fhumanes.com/_imagenes/factura_convert_PDF.zip

El webservices «prometido»

He hecho el código que tenía «comprometido» y he modificado el ejemplo para integrarlo con dicho webservices.

El ejemplo de webservices lo podéis descargar de la URL: https://fhumanes.com/_imagenes/convert_office.zip

Para todo aquel que desee hacer webservices con PHP es un buen ejemplo, además de llevar en framework de ZEND, para hacer este tipo de desarrollo de forma muy fácil y eficiente.

Los ficheros se pasan en Base64 (tanto input, como output)

En el proyecto de factura, hay que cambiar el código en los ficheros:

FacturaWordPDF.php

// --------------------- Convert to PDF -----------------------------------------------------
require_once("configuracion_wsdl.php");
$client = new SoapClient(WSDL, array('location' => LOCATION_WSDL));
$document = file_get_contents($temp_file);
$result = $client->ToPDF(base64_encode($document),'docx');
unlink($temp_file);  // delete file tmp

// ------------------ Operation with file result -------------------------------------------
header("Content-Disposition: attachment; filename= factura.pdf");
header('Content-Type: application/pdf');
echo base64_decode($result);

FacturaExcelPDF.php

// --------------------- Convert to PDF -----------------------------------------------------
require_once("configuracion_wsdl.php");
$client = new SoapClient(WSDL, array('location' => LOCATION_WSDL));
$document = file_get_contents($temp_file);
$result = $client->ToPDF(base64_encode($document),'xlsx');
unlink($temp_file);  // delete file tmp

// ------------------ Operation with file result -------------------------------------------
header("Content-Disposition: attachment; filename= factura.pdf");
header('Content-Type: application/pdf');
echo base64_decode($result);

Para cualquier duda o lo que necesités, poneros en contacto a través de mi email.