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.
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.
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.
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.
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.
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.