Forum


Replies: 4   Views: 6238
Transformdocxusingmsword con windows server 2008 y office 2007
Topic closed:
Please note this is an old forum thread. Information in this post may be out-to-date and/or erroneous.
Every phpdocx version includes new features and improvements. Previously unsupported features may have been added to newer releases, or past issues may have been corrected.
We encourage you to download the current phpdocx version and check the Documentation available.

Posted by willow  · 07-04-2015 - 18:07

Hola, Acabo de instalar un servidor Windows Server 2008 R2 con Apache 2.4, PHP 5.5, PHPDocx 3.7 versión PRO+ y Microsoft Office 2007. Test del check.php: c:\tmp2>php check.php OK PHP version is 5.5.23 OK Zip support is enabled. OK XSL support is enabled. OK DOM support is enabled. OK XML support is enabled. OK Tidy support is enabled. Warning The path examples/docx used by the examples isn't writable. OK The library can write to temp folder. Warning You're not running OpenOffice in headless mode on port 8100. If you have any issue or problem please send us the following info: PHP_VERSION: 5.5.23 PHP_OS: WINNT PHP_UNAME: Windows NT WIN-384NRURJD43 6.1 build 7601 (Windows Server 2008 R2 Sta ndard Edition Service Pack 1) i586 CODE: SERVER_NAME: SERVER_SOFTWARE: SERVER_ADDR: SERVER_PROTOCOL: HTTP_HOST: XXXXXXXXX HTTP_X_FORWARDED_FOR: PHP_SELF: check.php XSLTProcessor: 1 ZipArchive: 1 DomDocument: 1 SimpleXMLElement: 1 Tidy: 1 IS_WRITABLE DEFAULT TEMP: 1 c:\tmp2> Con el siguiente ejemplo: $docx = new CreateDocx(); $docx->transformDocxUsingMSWord('C:\\tmp2\\temp.docx', 'C:\\tmp2\\test.pdf'); $docx->transformDocxUsingMSWord('C:\\tmp2\\temp.docx', 'C:\\tmp2\\test.txt'); Resultado: Fatal error: Uncaught exception 'com_exception' with message 'Source: Microsoft Word
Description: El elemento del conjunto solicitado no existe.' in C:\Apache24\includes\PHPdocx\classes\MSWordInterface.inc:65 Stack trace: #0 C:\Apache24\includes\PHPdocx\classes\MSWordInterface.inc(65): MSWordInterface->transformFormat() #1 C:\Apache24\includes\PHPdocx\classes\CreateDocx.inc(7197): MSWordInterface->transformFormat('C:\\tmp2\\temp.do...', 'C:\\WINDOWS\\TEMP...') #2 C:\Apache24\htdocs\test.php(8): CreateDocx->transformDocxUsingMSWord('C:\\tmp2\\temp.do...', 'C:\\WINDOWS\\TEMP...') #3 {main} thrown in C:\Apache24\includes\PHPdocx\classes\MSWordInterface.inc on line 65 ¿alguna idea o sugerencia? Gracias y un saludo, Sergio.

Posted by admin  · 08-04-2015 - 06:53

Hola, El error puede provenir de problemas de permisos en la carpeta temporal o de las rutas a los archivos. Te recomendamos que utilices '\\\\' para las rutas y ejecutes el ejemplo más pequeño disponible disponible en: http://php.net/manual/en/class.com.php Saludos.

Posted by willow  · 08-04-2015 - 12:51

Gracias por la respuesta. Acabo de probar este ejemplo: ##### $word = new COM("word.application") or die("Unable to instantiate Word"); echo "Loaded Word, version {$word->Version}\n"; //bring it to front $word->Visible = 1; //open an empty document $word->Documents->Add(); //do some weird stuff $word->Selection->TypeText("Esto es una prueba de SVIM"); $word->Documents[1]->SaveAs("c:/test.doc"); //closing word $word->Quit(); //free the object $word = null; ############### C:\Apache24\htdocs>php comWord.php Loaded Word, version 12.0 C:\Apache24\htdocs> Este ejemplo si funciona sin problema... ¿Alguna idea? Gracias y un saludo, Sergio.

Posted by admin  · 09-04-2015 - 06:50

Hola, Te recomendamos que edites el archivo classes/MSWordInterface.inc y lo depures. Son apenas 20 líneas lo que hay que revisar para localizar el problema que estás encontrado. Todo apunta a que es un problema de acceso al archivo, ya sea por la ruta del directorio o por los permisos de creación. Saludos.

Posted by willow  · 09-04-2015 - 20:05

Hola, Donde sucede el error es aquí: $MSWordInstance->Documents[1]->SaveAs($docDestination,$code[$extension]); $code: Array ( [doc] => 0 [pdf] => 17 [rtf] => 6 [html] => 8 [htm] => 8 [txt] => 5 ) $extension = pdf $docDestination = C:\\Apache24\\htdocs\\docx\\test.pdf Si lo ejecuto desde la consola por segunda vez: php test4.php aparece este mensaje: Aparece el mensaje "temp.docx está bloqueado para su edición por 'Usuario de Windows'. O Abrir una copia de sólo lectura O Crear una copia y combinar los cambios más tarde O Recibir notificación cuando esté disponible la copia original Si pulso cualquier opción aparece el error "com_exception"... Para verificar los permisos he ejecutado este comando: icacls C:\Apache24\htdocs\uploads /grant IUSR:(OI)(CI)(M) C:\Apache24\htdocs>icacls uploads uploads NT AUTHORITY\IUSR:(OI)(CI)(M) NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F) BUILTIN\Administradores:(I)(OI)(CI)(F) BUILTIN\Usuarios:(I)(OI)(CI)(RX) BUILTIN\Usuarios:(I)(CI)(AD) BUILTIN\Usuarios:(I)(CI)(WD) CREATOR OWNER:(I)(OI)(CI)(IO)(F) ¿alguna idea de que puede ser? Gracias y un saludo, Sergio.